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

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

{
  float fVar1;
  longlong lVar2;
  double dVar3;
  float fVar4;
  double dVar5;
  char cVar6;
  char cVar7;
  uchar uVar8;
  uchar uVar9;
  ushort uVar10;
  ushort uVar11;
  ushort uVar12;
  uint uVar13;
  uint uVar14;
  ssize_t sVar15;
  byte bVar16;
  int iVar17;
  uchar uVar18;
  PixelChannelMap *pPVar19;
  byte bVar20;
  uchar uVar21;
  uchar uVar22;
  uchar uVar23;
  uint uVar24;
  size_t sVar25;
  int iVar26;
  uint uVar27;
  uint uVar28;
  float fVar29;
  uint local_b4;
  uchar local_ac;
  uchar local_a4;
  int local_9c;
  uchar local_94;
  uchar local_8c;
  undefined8 local_84;
  int local_7c;
  int iStack_78;
  uint local_74;
  int local_6c;
  uint local_5c;
  uint local_54;
  uint local_4c;
  uint local_44;
  uint local_34;
  
  dVar5 = DAT_002e8160;
  fVar1 = DAT_002df8a8;
  dVar3 = _DAT_002df2e0;
  if (exception == (ExceptionInfo *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,
                  "ExportBGRAQuantum");
  }
  if (exception->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,
                  "ExportBGRAQuantum");
  }
  uVar24 = quantum_info->depth;
  if (uVar24 == 0x10) {
    if (quantum_info->format == FloatingPointQuantumFormat) {
      if ((int)number_pixels < 1) {
        return;
      }
      local_b4 = 0;
      do {
        uVar10 = SinglePrecisionToHalf
                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])
                           );
        uVar12 = uVar10 >> 8;
        uVar11 = uVar10;
        if (quantum_info->endian == LSBEndian) {
          uVar11 = uVar12;
          uVar12 = uVar10;
        }
        *q = (uchar)uVar12;
        q[1] = (uchar)uVar11;
        dVar5 = _DAT_002df2e0;
        uVar10 = SinglePrecisionToHalf
                           ((float)((longdouble)p[image->channel_map[1].offset] *
                                   (longdouble)_DAT_002df2e0));
        uVar12 = uVar10 >> 8;
        uVar11 = uVar10;
        if (quantum_info->endian == LSBEndian) {
          uVar11 = uVar12;
          uVar12 = uVar10;
        }
        q[2] = (uchar)uVar12;
        q[3] = (uchar)uVar11;
        uVar12 = SinglePrecisionToHalf
                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));
        uVar21 = (uchar)(uVar12 >> 8);
        if (quantum_info->endian == LSBEndian) {
          uVar21 = (uchar)uVar12;
          uVar12 = uVar12 >> 8;
        }
        q[4] = uVar21;
        q[5] = (uchar)uVar12;
        if (image->channel_map[4].traits == UndefinedPixelTrait) {
          fVar1 = 1.0;
        }
        else {
          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);
        }
        uVar12 = SinglePrecisionToHalf(fVar1);
        uVar21 = (uchar)(uVar12 >> 8);
        if (quantum_info->endian == LSBEndian) {
          uVar21 = (uchar)uVar12;
          uVar12 = uVar12 >> 8;
        }
        local_b4 = local_b4 + 1;
        q[6] = uVar21;
        q[7] = (uchar)uVar12;
        q = q + quantum_info->pad + 8;
        p = p + image->number_channels;
      } while (local_b4 != (int)number_pixels);
      return;
    }
    if ((int)number_pixels < 1) {
      return;
    }
    local_b4 = 0;
    do {
      dVar3 = p[image->channel_map[2].offset];
      if (dVar3 <= 0.0) {
        iVar26 = 0;
        uVar21 = '\0';
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar26 = -1;
        uVar21 = 0xff;
      }
      else {
        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        uVar21 = (uchar)((uint)iVar26 >> 8);
      }
      uVar18 = uVar21;
      uVar9 = (uchar)iVar26;
      if (quantum_info->endian != LSBEndian) {
        uVar18 = (uchar)iVar26;
        uVar9 = uVar21;
      }
      q[1] = uVar18;
      *q = uVar9;
      dVar3 = p[image->channel_map[1].offset];
      if (dVar3 <= 0.0) {
        iVar26 = 0;
        uVar21 = '\0';
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar26 = -1;
        uVar21 = 0xff;
      }
      else {
        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        uVar21 = (uchar)((uint)iVar26 >> 8);
      }
      uVar18 = (uchar)iVar26;
      if (quantum_info->endian == LSBEndian) {
        uVar18 = uVar21;
        uVar21 = (uchar)iVar26;
      }
      q[3] = uVar18;
      q[2] = uVar21;
      dVar3 = p[image->channel_map->offset];
      if (dVar3 <= 0.0) {
        iVar26 = 0;
        uVar21 = '\0';
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar26 = -1;
        uVar21 = 0xff;
      }
      else {
        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        uVar21 = (uchar)((uint)iVar26 >> 8);
      }
      uVar18 = (uchar)iVar26;
      if (quantum_info->endian == LSBEndian) {
        uVar18 = uVar21;
        uVar21 = (uchar)iVar26;
      }
      q[5] = uVar18;
      q[4] = uVar21;
      if (image->channel_map[4].traits == UndefinedPixelTrait) {
LAB_00164f80:
        iVar26 = -1;
        local_ac = 0xff;
      }
      else {
        dVar3 = p[image->channel_map[4].offset];
        if (dVar3 <= 0.0) {
          iVar26 = 0;
          local_ac = '\0';
        }
        else {
          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;
          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
          local_ac = (uchar)((uint)iVar26 >> 8);
        }
      }
      uVar21 = (uchar)iVar26;
      if (quantum_info->endian == LSBEndian) {
        uVar21 = local_ac;
        local_ac = (uchar)iVar26;
      }
      q[7] = uVar21;
      local_b4 = local_b4 + 1;
      q[6] = local_ac;
      q = q + quantum_info->pad + 8;
      p = p + image->number_channels;
      if (local_b4 == (int)number_pixels) {
        return;
      }
    } while( true );
  }
  if (uVar24 < 0x11) {
    if (uVar24 == 8) {
      if ((int)number_pixels < 1) {
        return;
      }
      iVar26 = 0;
      do {
        uVar21 = '\0';
        if (0.0 < p[image->channel_map[2].offset]) {
          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;
          uVar21 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        *q = uVar21;
        uVar21 = '\0';
        if (0.0 < p[image->channel_map[1].offset]) {
          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;
          uVar21 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        q[1] = uVar21;
        uVar21 = '\0';
        if (0.0 < p[image->channel_map->offset]) {
          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;
          uVar21 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        q[2] = uVar21;
        uVar21 = 0xff;
        if (image->channel_map[4].traits != UndefinedPixelTrait) {
          uVar21 = '\0';
          if (0.0 < p[image->channel_map[4].offset]) {
            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;
            if ((double)DAT_002e8150 <= dVar3) {
              uVar21 = 0xff;
            }
            else {
              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);
            }
          }
        }
        q[3] = uVar21;
        iVar26 = iVar26 + 1;
        p = p + image->number_channels;
        q = q + quantum_info->pad + 4;
      } while (iVar26 != (int)number_pixels);
      return;
    }
    if (uVar24 == 10) {
      if (quantum_info->pack == MagickFalse) {
        if ((int)number_pixels < 1) {
          return;
        }
        uVar24 = 0;
        iVar26 = 0;
        do {
          iVar17 = 0;
          do {
            pPVar19 = image->channel_map;
            if (iVar17 == 2) {
              sVar15 = pPVar19[2].offset;
LAB_001644de:
              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);
            }
            else if (iVar17 == 3) {
              fVar1 = DAT_002df8a8;
              if (pPVar19[4].traits != UndefinedPixelTrait) {
                sVar15 = pPVar19[4].offset;
                goto LAB_001644de;
              }
            }
            else {
              if (iVar17 == 1) {
                sVar15 = pPVar19[1].offset;
              }
              else {
                sVar15 = pPVar19->offset;
              }
              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);
            }
            uVar27 = (uint)(iVar17 + iVar26) % 3;
            if (uVar27 == 1) {
              if (0.0 < fVar1) {
                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
                if (DAT_002df8b0 <= fVar1) {
                  uVar24 = 0xfffff000;
                }
                else {
                  fVar1 = fVar1 + DAT_002df2b8;
                  if (DAT_002df2c8 <= fVar1) {
                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                  }
                  else {
                    local_34 = (uint)(longlong)ROUND(fVar1);
                  }
                  uVar24 = uVar24 | local_34 << 0xc;
                }
              }
            }
            else if (uVar27 == 2) {
              if (0.0 < fVar1) {
                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
                if (DAT_002df8b0 <= fVar1) {
                  uVar24 = 0xfffffffc;
                }
                else {
                  fVar1 = fVar1 + DAT_002df2b8;
                  if (DAT_002df2c8 <= fVar1) {
                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                  }
                  else {
                    local_34 = (uint)(longlong)ROUND(fVar1);
                  }
                  uVar24 = uVar24 | local_34 << 2;
                }
              }
              uVar18 = (uchar)(uVar24 >> 8);
              uVar21 = (uchar)(uVar24 >> 0x10);
              local_a4 = (uchar)(uVar24 >> 0x18);
              if (quantum_info->endian == LSBEndian) {
                *q = (uchar)uVar24;
                uVar24 = 0;
                q[2] = uVar21;
                q[1] = uVar18;
                q[3] = local_a4;
                q = q + 4;
              }
              else {
                q[3] = (uchar)uVar24;
                uVar24 = 0;
                q[2] = uVar18;
                *q = local_a4;
                q[1] = uVar21;
                q = q + 4;
              }
            }
            else if (0.0 < fVar1) {
              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
              if (DAT_002df8b0 <= fVar1) {
                uVar24 = uVar24 | 0xffc00000;
              }
              else {
                fVar1 = fVar1 + DAT_002df2b8;
                if (DAT_002df2c8 <= fVar1) {
                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                }
                else {
                  local_34 = (uint)(longlong)ROUND(fVar1);
                }
                uVar24 = uVar24 | local_34 << 0x16;
              }
            }
            iVar17 = iVar17 + 1;
          } while (iVar17 != 4);
          iVar26 = iVar26 + 4;
          p = p + image->number_channels;
          q = q + quantum_info->pad;
          if ((int)number_pixels << 2 == iVar26) {
            return;
          }
        } while( true );
      }
      if (quantum_info->quantum == 0x20) {
        if ((int)number_pixels < 1) {
          return;
        }
        sVar25 = (quantum_info->state).bits;
        local_9c = 0;
        local_74 = 10;
        while( true ) {
          local_b4 = 0;
          pPVar19 = image->channel_map;
          if (0.0 < p[pPVar19->offset]) {
            local_b4 = 0xffffffff;
            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (sVar25 == 0) {
            (quantum_info->state).bits = 0x20;
            sVar25 = 0x20;
          }
          if (0 < (int)local_74) {
            uVar24 = (quantum_info->state).pixel;
            uVar27 = local_74;
            do {
              uVar28 = sVar25;
              if (uVar27 <= sVar25) {
                uVar28 = uVar27;
              }
              cVar6 = (char)uVar27;
              uVar27 = uVar27 - uVar28;
              uVar14 = (quantum_info->state).mask[uVar28];
              cVar7 = (char)sVar25;
              sVar25 = sVar25 - uVar28;
              (quantum_info->state).bits = sVar25;
              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<
                                (0x20U - cVar7 & 0x1f);
              (quantum_info->state).pixel = uVar24;
              if (sVar25 == 0) {
                uVar21 = (uchar)(uVar24 >> 0x18);
                local_ac = (uchar)(uVar24 >> 0x10);
                local_a4 = (uchar)(uVar24 >> 8);
                if (quantum_info->endian == LSBEndian) {
                  *q = (uchar)uVar24;
                  q[3] = uVar21;
                  q[1] = local_a4;
                  q[2] = local_ac;
                }
                else {
                  *q = uVar21;
                  q[1] = local_ac;
                  q[2] = local_a4;
                  q[3] = (uchar)uVar24;
                }
                local_74 = quantum_info->depth;
                (quantum_info->state).pixel = 0;
                uVar24 = 0;
                (quantum_info->state).bits = 0x20;
                sVar25 = 0x20;
                q = q + 4;
              }
            } while (0 < (int)uVar27);
            pPVar19 = image->channel_map;
          }
          local_b4 = 0;
          if (0.0 < p[pPVar19[1].offset]) {
            local_b4 = 0xffffffff;
            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar24 = (quantum_info->state).pixel;
            uVar27 = local_74;
            do {
              uVar28 = sVar25;
              if (uVar27 <= sVar25) {
                uVar28 = uVar27;
              }
              cVar6 = (char)uVar27;
              uVar27 = uVar27 - uVar28;
              uVar14 = (quantum_info->state).mask[uVar28];
              cVar7 = (char)sVar25;
              sVar25 = sVar25 - uVar28;
              (quantum_info->state).bits = sVar25;
              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<
                                (0x20U - cVar7 & 0x1f);
              (quantum_info->state).pixel = uVar24;
              if (sVar25 == 0) {
                uVar21 = (uchar)(uVar24 >> 0x18);
                local_ac = (uchar)(uVar24 >> 0x10);
                local_a4 = (uchar)(uVar24 >> 8);
                if (quantum_info->endian == LSBEndian) {
                  *q = (uchar)uVar24;
                  q[3] = uVar21;
                  q[1] = local_a4;
                  q[2] = local_ac;
                }
                else {
                  *q = uVar21;
                  q[1] = local_ac;
                  q[2] = local_a4;
                  q[3] = (uchar)uVar24;
                }
                local_74 = quantum_info->depth;
                (quantum_info->state).pixel = 0;
                uVar24 = 0;
                (quantum_info->state).bits = 0x20;
                sVar25 = 0x20;
                q = q + 4;
              }
            } while (0 < (int)uVar27);
            pPVar19 = image->channel_map;
          }
          local_b4 = 0;
          if (0.0 < p[pPVar19[2].offset]) {
            local_b4 = 0xffffffff;
            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar24 = (quantum_info->state).pixel;
            uVar27 = local_74;
            do {
              uVar28 = sVar25;
              if (uVar27 <= sVar25) {
                uVar28 = uVar27;
              }
              cVar6 = (char)uVar27;
              uVar27 = uVar27 - uVar28;
              uVar14 = (quantum_info->state).mask[uVar28];
              cVar7 = (char)sVar25;
              sVar25 = sVar25 - uVar28;
              (quantum_info->state).bits = sVar25;
              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<
                                (0x20U - cVar7 & 0x1f);
              (quantum_info->state).pixel = uVar24;
              if (sVar25 == 0) {
                uVar21 = (uchar)(uVar24 >> 0x18);
                local_ac = (uchar)(uVar24 >> 0x10);
                local_a4 = (uchar)(uVar24 >> 8);
                if (quantum_info->endian == LSBEndian) {
                  *q = (uchar)uVar24;
                  q[3] = uVar21;
                  q[1] = local_a4;
                  q[2] = local_ac;
                }
                else {
                  *q = uVar21;
                  q[1] = local_ac;
                  q[2] = local_a4;
                  q[3] = (uchar)uVar24;
                }
                local_74 = quantum_info->depth;
                (quantum_info->state).pixel = 0;
                uVar24 = 0;
                (quantum_info->state).bits = 0x20;
                sVar25 = 0x20;
                q = q + 4;
              }
            } while (0 < (int)uVar27);
            pPVar19 = image->channel_map;
          }
          local_b4 = 0x3ff;
          if (pPVar19[4].traits != UndefinedPixelTrait) {
            local_b4 = 0;
            if (0.0 < p[pPVar19[4].offset]) {
              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;
              if (dVar3 < (double)DAT_002df8b0) {
                dVar3 = dVar3 + (double)DAT_002df2b8;
                if ((double)DAT_002df2c8 <= dVar3) {
                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                  local_b4 = local_34;
                }
                else {
                  local_34 = (uint)(longlong)ROUND(dVar3);
                  local_b4 = local_34;
                }
              }
              else {
                local_b4 = 0xffffffff;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar24 = (quantum_info->state).pixel;
            uVar27 = local_74;
            while( true ) {
              uVar28 = sVar25;
              if (local_74 <= sVar25) {
                uVar28 = local_74;
              }
              cVar6 = (char)local_74;
              local_74 = local_74 - uVar28;
              uVar14 = (quantum_info->state).mask[uVar28];
              cVar7 = (char)sVar25;
              sVar25 = sVar25 - uVar28;
              (quantum_info->state).bits = sVar25;
              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<
                                (0x20U - cVar7 & 0x1f);
              (quantum_info->state).pixel = uVar24;
              if (sVar25 == 0) {
                uVar21 = (uchar)(uVar24 >> 0x18);
                local_ac = (uchar)(uVar24 >> 0x10);
                local_a4 = (uchar)(uVar24 >> 8);
                if (quantum_info->endian == LSBEndian) {
                  *q = (uchar)uVar24;
                  q[3] = uVar21;
                  q[1] = local_a4;
                  q[2] = local_ac;
                }
                else {
                  *q = uVar21;
                  q[1] = local_ac;
                  q[2] = local_a4;
                  q[3] = (uchar)uVar24;
                }
                (quantum_info->state).pixel = 0;
                uVar24 = 0;
                sVar25 = 0x20;
                (quantum_info->state).bits = 0x20;
                q = q + 4;
              }
              if ((int)local_74 < 1) break;
              uVar27 = quantum_info->depth;
            }
          }
          local_9c = local_9c + 1;
          p = p + image->number_channels;
          q = q + quantum_info->pad;
          if (local_9c == (int)number_pixels) break;
          local_74 = quantum_info->depth;
        }
        return;
      }
      iVar26 = 0;
      if ((int)number_pixels < 1) {
        return;
      }
      sVar25 = 10;
      do {
        pPVar19 = image->channel_map;
        if (p[pPVar19->offset] <= 0.0) {
          local_4c = 0;
        }
        else {
          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;
          if ((double)DAT_002df8b0 <= dVar3) {
            local_4c = 0xffffffff;
          }
          else {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_4c = local_34;
            }
            else {
              local_34 = (uint)(longlong)ROUND(dVar3);
              local_4c = local_34;
            }
          }
        }
        uVar24 = (quantum_info->state).bits;
        if (uVar24 == 0) {
          (quantum_info->state).bits = 8;
          uVar24 = 8;
        }
        if ((int)sVar25 < 1) {
          dVar3 = p[pPVar19[1].offset];
          if (!NAN(dVar3)) goto LAB_00165390;
          local_54 = 0;
        }
        else {
          do {
            while( true ) {
              uVar27 = uVar24;
              if (sVar25 <= uVar24) {
                uVar27 = sVar25;
              }
              uVar28 = sVar25 - uVar27;
              sVar25 = 0;
              if (-1 < (int)uVar28) {
                sVar25 = uVar28;
              }
              if (uVar24 == 8) {
                *q = '\0';
              }
              uVar24 = uVar24 - uVar27;
              bVar20 = (byte)sVar25 & 0x1f;
              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;
              if ((sVar25 & 0x20) != 0) {
                uVar14 = 0 >> ((byte)sVar25 & 0x1f);
              }
              (quantum_info->state).bits = uVar24;
              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));
              if ((uVar24 & 0x20) != 0) {
                bVar20 = 0;
              }
              *q = *q | bVar20;
              if (uVar24 != 0) break;
              q = q + 1;
              (quantum_info->state).bits = 8;
              uVar24 = 8;
              if ((int)uVar28 < 1) goto LAB_00165364;
            }
            uVar24 = (quantum_info->state).bits;
          } while (0 < (int)uVar28);
LAB_00165364:
          pPVar19 = image->channel_map;
          sVar25 = quantum_info->depth;
          dVar3 = p[pPVar19[1].offset];
          if (NAN(dVar3)) {
LAB_00165e72:
            local_54 = 0;
          }
          else {
LAB_00165390:
            if (dVar3 <= 0.0) goto LAB_00165e72;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if ((double)DAT_002df8b0 <= dVar3) {
              local_54 = 0xffffffff;
            }
            else {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_54 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_54 = local_34;
              }
            }
          }
          if (uVar24 == 0) {
            (quantum_info->state).bits = 8;
            uVar24 = 8;
          }
        }
        if ((int)sVar25 < 1) {
          dVar3 = p[pPVar19[2].offset];
          if (!NAN(dVar3)) goto LAB_00165520;
          local_5c = 0;
        }
        else {
          do {
            while( true ) {
              uVar27 = uVar24;
              if (sVar25 <= uVar24) {
                uVar27 = sVar25;
              }
              uVar28 = sVar25 - uVar27;
              sVar25 = 0;
              if (-1 < (int)uVar28) {
                sVar25 = uVar28;
              }
              if (uVar24 == 8) {
                *q = '\0';
              }
              uVar24 = uVar24 - uVar27;
              bVar20 = (byte)sVar25 & 0x1f;
              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;
              if ((sVar25 & 0x20) != 0) {
                uVar14 = 0 >> ((byte)sVar25 & 0x1f);
              }
              (quantum_info->state).bits = uVar24;
              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));
              if ((uVar24 & 0x20) != 0) {
                bVar20 = 0;
              }
              *q = *q | bVar20;
              if (uVar24 != 0) break;
              q = q + 1;
              (quantum_info->state).bits = 8;
              uVar24 = 8;
              if ((int)uVar28 < 1) goto LAB_001654f4;
            }
            uVar24 = (quantum_info->state).bits;
          } while (0 < (int)uVar28);
LAB_001654f4:
          pPVar19 = image->channel_map;
          sVar25 = quantum_info->depth;
          dVar3 = p[pPVar19[2].offset];
          if (NAN(dVar3)) {
LAB_00165e52:
            local_5c = 0;
          }
          else {
LAB_00165520:
            if (dVar3 <= 0.0) goto LAB_00165e52;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if ((double)DAT_002df8b0 <= dVar3) {
              local_5c = 0xffffffff;
            }
            else {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_5c = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_5c = local_34;
              }
            }
          }
          if (uVar24 == 0) {
            (quantum_info->state).bits = 8;
            uVar24 = 8;
          }
        }
        if (0 < (int)sVar25) {
          do {
            while( true ) {
              uVar27 = uVar24;
              if (sVar25 <= uVar24) {
                uVar27 = sVar25;
              }
              uVar28 = sVar25 - uVar27;
              sVar25 = 0;
              if (-1 < (int)uVar28) {
                sVar25 = uVar28;
              }
              if (uVar24 == 8) {
                *q = '\0';
              }
              uVar24 = uVar24 - uVar27;
              bVar20 = (byte)sVar25 & 0x1f;
              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;
              if ((sVar25 & 0x20) != 0) {
                uVar14 = 0 >> ((byte)sVar25 & 0x1f);
              }
              (quantum_info->state).bits = uVar24;
              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));
              if ((uVar24 & 0x20) != 0) {
                bVar20 = 0;
              }
              *q = *q | bVar20;
              if (uVar24 != 0) break;
              q = q + 1;
              (quantum_info->state).bits = 8;
              uVar24 = 8;
              if ((int)uVar28 < 1) goto LAB_00165684;
            }
            uVar24 = (quantum_info->state).bits;
          } while (0 < (int)uVar28);
LAB_00165684:
          pPVar19 = image->channel_map;
          sVar25 = quantum_info->depth;
        }
        if (pPVar19[4].traits == UndefinedPixelTrait) {
          local_44 = 0x3ff;
        }
        else if (p[pPVar19[4].offset] <= 0.0) {
          local_44 = 0;
        }
        else {
          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;
          if (dVar3 < (double)DAT_002df8b0) {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_44 = local_34;
            }
            else {
              local_34 = (uint)(longlong)ROUND(dVar3);
              local_44 = local_34;
            }
          }
          else {
            local_44 = 0xffffffff;
          }
        }
        if (uVar24 == 0) {
          (quantum_info->state).bits = 8;
          uVar24 = 8;
        }
        if (0 < (int)sVar25) {
          while( true ) {
            uVar27 = uVar24;
            if (sVar25 <= uVar24) {
              uVar27 = sVar25;
            }
            uVar28 = sVar25 - uVar27;
            sVar25 = 0;
            if (-1 < (int)uVar28) {
              sVar25 = uVar28;
            }
            if (uVar24 == 8) {
              *q = 0;
            }
            uVar24 = uVar24 - uVar27;
            (quantum_info->state).bits = uVar24;
            bVar20 = (byte)sVar25 & 0x1f;
            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;
            if ((sVar25 & 0x20) != 0) {
              uVar14 = 0 >> ((byte)sVar25 & 0x1f);
            }
            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));
            if ((uVar24 & 0x20) != 0) {
              bVar20 = 0;
            }
            *q = *q | bVar20;
            if (uVar24 == 0) {
              q = q + 1;
              (quantum_info->state).bits = 8;
            }
            if ((int)uVar28 < 1) break;
            uVar24 = (quantum_info->state).bits;
          }
        }
        iVar26 = iVar26 + 1;
        p = p + image->number_channels;
        q = q + quantum_info->pad;
        if (iVar26 == (int)number_pixels) {
          return;
        }
        sVar25 = quantum_info->depth;
      } while( true );
    }
LAB_001642d0:
    local_7c = 0;
    iStack_78 = 0;
    if (uVar24 == 0) goto LAB_00163bfb;
  }
  else {
    if (uVar24 == 0x20) {
      if (quantum_info->format == FloatingPointQuantumFormat) {
        if ((int)number_pixels < 1) {
          return;
        }
        local_b4 = 0;
        do {
          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale
                  + (float)quantum_info->minimum;
          uVar21 = (uchar)((uint)fVar4 >> 8);
          uVar9 = (uchar)((uint)fVar4 >> 0x10);
          uVar18 = (uchar)((uint)fVar4 >> 0x18);
          if (quantum_info->endian == LSBEndian) {
            *q = SUB41(fVar4,0);
            q[1] = uVar21;
            q[2] = uVar9;
            q[3] = uVar18;
          }
          else {
            q[1] = uVar9;
            *q = uVar18;
            q[2] = uVar21;
            q[3] = SUB41(fVar4,0);
          }
          fVar4 = (float)p[image->channel_map[1].offset] *
                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;
          uVar21 = (uchar)((uint)fVar4 >> 8);
          uVar9 = (uchar)((uint)fVar4 >> 0x10);
          uVar18 = (uchar)((uint)fVar4 >> 0x18);
          if (quantum_info->endian == LSBEndian) {
            q[4] = SUB41(fVar4,0);
            q[6] = uVar9;
            q[5] = uVar21;
            q[7] = uVar18;
          }
          else {
            q[5] = uVar9;
            q[4] = uVar18;
            q[6] = uVar21;
            q[7] = SUB41(fVar4,0);
          }
          fVar4 = (float)p[image->channel_map[2].offset] *
                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;
          uVar21 = (uchar)((uint)fVar4 >> 8);
          uVar18 = (uchar)((uint)fVar4 >> 0x18);
          uVar9 = (uchar)((uint)fVar4 >> 0x10);
          if (quantum_info->endian == LSBEndian) {
            q[8] = SUB41(fVar4,0);
            q[10] = uVar9;
            q[9] = uVar21;
            q[0xb] = uVar18;
          }
          else {
            q[10] = uVar21;
            q[8] = uVar18;
            q[9] = uVar9;
            q[0xb] = SUB41(fVar4,0);
          }
          fVar4 = fVar1;
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            fVar4 = (float)p[image->channel_map[4].offset];
          }
          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;
          uVar21 = (uchar)((uint)fVar4 >> 8);
          fVar29 = (float)((uint)fVar4 >> 0x18);
          uVar18 = (uchar)((uint)fVar4 >> 0x10);
          if (quantum_info->endian == LSBEndian) {
            q[0xc] = SUB41(fVar4,0);
            q[0xe] = uVar18;
            q[0xd] = uVar21;
          }
          else {
            q[0xe] = uVar21;
            q[0xc] = (uchar)((uint)fVar4 >> 0x18);
            q[0xd] = uVar18;
            fVar29 = fVar4;
          }
          q[0xf] = SUB41(fVar29,0);
          local_b4 = local_b4 + 1;
          p = p + image->number_channels;
          q = q + quantum_info->pad + 0x10;
        } while (local_b4 != (int)number_pixels);
        return;
      }
      if ((int)number_pixels < 1) {
        return;
      }
      local_b4 = 0;
      do {
        if (p[image->channel_map[2].offset] <= 0.0) {
          uVar21 = '\0';
          local_34._0_1_ = '\0';
          uVar18 = '\0';
          uVar23 = '\0';
          uVar9 = '\0';
          uVar8 = '\0';
          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;
LAB_00164af3:
          q[1] = uVar9;
          *q = uVar8;
          q[2] = uVar23;
          q[3] = (uchar)local_34;
        }
        else {
          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;
          if (dVar5 <= dVar3) {
            local_34._0_1_ = 0xff;
            uVar23 = 0xff;
            uVar9 = 0xff;
            uVar8 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (uchar)lVar2;
            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);
            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);
            uVar23 = (uchar)((ulonglong)lVar2 >> 8);
          }
          uVar21 = (uchar)local_34;
          uVar18 = uVar23;
          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;
LAB_00164d14:
          *q = uVar21;
          q[1] = uVar18;
          q[2] = uVar9;
          q[3] = uVar8;
        }
        if (p[image->channel_map[1].offset] <= 0.0) {
          uVar21 = '\0';
          local_34._0_1_ = '\0';
          uVar9 = '\0';
          uVar22 = '\0';
          uVar8 = '\0';
          uVar18 = '\0';
          uVar23 = '\0';
          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;
LAB_00164b98:
          q[4] = uVar23;
          q[5] = uVar8;
          q[6] = uVar22;
          q[7] = (uchar)local_34;
        }
        else {
          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;
          if (DAT_002e8160 <= dVar3) {
            local_34._0_1_ = 0xff;
            uVar22 = 0xff;
            uVar8 = 0xff;
            uVar23 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (uchar)lVar2;
            uVar22 = (uchar)((ulonglong)lVar2 >> 8);
            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);
            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);
          }
          uVar21 = (uchar)local_34;
          uVar18 = uVar23;
          uVar9 = uVar22;
          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;
LAB_00164ce4:
          q[4] = uVar21;
          q[5] = uVar9;
          q[6] = uVar8;
          q[7] = uVar18;
        }
        if (p[image->channel_map->offset] <= 0.0) {
          uVar21 = '\0';
          local_34._0_1_ = '\0';
          uVar18 = '\0';
          uVar22 = '\0';
          uVar8 = '\0';
          uVar9 = '\0';
          uVar23 = '\0';
          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;
LAB_00164c3f:
          q[10] = uVar22;
          q[8] = uVar23;
          q[9] = uVar8;
          q[0xb] = (uchar)local_34;
        }
        else {
          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;
          if (DAT_002e8160 <= dVar3) {
            local_34._0_1_ = 0xff;
            uVar22 = 0xff;
            uVar8 = 0xff;
            uVar23 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (uchar)lVar2;
            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);
            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);
            uVar22 = (uchar)((ulonglong)lVar2 >> 8);
          }
          uVar21 = (uchar)local_34;
          uVar18 = uVar22;
          uVar9 = uVar23;
          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;
LAB_00164cb8:
          q[8] = uVar21;
          q[9] = uVar18;
          q[10] = uVar8;
          q[0xb] = uVar9;
        }
        if (image->channel_map[4].traits == UndefinedPixelTrait) {
LAB_00164c70:
          local_34._0_1_ = 0xff;
          uVar9 = 0xff;
          uVar18 = 0xff;
          uVar21 = 0xff;
          uVar8 = (uchar)local_34;
          uVar23 = 0xff;
          uVar22 = 0xff;
          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;
LAB_00164c8e:
          uVar8 = uVar21;
          q[0xc] = (uchar)local_34;
          q[0xd] = uVar9;
          q[0xe] = uVar23;
        }
        else {
          if (p[image->channel_map[4].offset] <= 0.0) {
            local_34._0_1_ = '\0';
            uVar9 = '\0';
            uVar18 = '\0';
            uVar21 = '\0';
          }
          else {
            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;
            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (uchar)lVar2;
            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);
            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);
            uVar9 = (uchar)((ulonglong)lVar2 >> 8);
          }
          uVar8 = (uchar)local_34;
          uVar23 = uVar18;
          uVar22 = uVar9;
          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;
LAB_00164a1f:
          q[0xd] = uVar18;
          q[0xc] = uVar21;
          q[0xe] = uVar22;
        }
        q[0xf] = uVar8;
        local_b4 = local_b4 + 1;
        p = p + image->number_channels;
        q = q + quantum_info->pad + 0x10;
        if (local_b4 == (int)number_pixels) {
          return;
        }
      } while( true );
    }
    if (uVar24 != 0x40) goto LAB_001642d0;
    if (quantum_info->format == FloatingPointQuantumFormat) {
      local_b4 = 0;
      dVar3 = (double)DAT_002df8a8;
      if ((int)number_pixels < 1) {
        return;
      }
      do {
        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +
                quantum_info->minimum;
        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);
        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);
        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);
        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);
        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);
        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);
        local_ac = (uchar)((ulonglong)dVar5 >> 8);
        if (quantum_info->endian == LSBEndian) {
          *q = SUB81(dVar5,0);
          q[4] = uVar18;
          q[5] = uVar21;
          q[1] = local_ac;
          q[2] = local_8c;
          q[3] = local_94;
          q[6] = (uchar)local_9c;
          q[7] = local_a4;
        }
        else {
          q[2] = uVar21;
          q[3] = uVar18;
          q[7] = SUB81(dVar5,0);
          q[4] = local_94;
          *q = local_a4;
          q[5] = local_8c;
          q[1] = (uchar)local_9c;
          q[6] = local_ac;
        }
        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +
                quantum_info->minimum;
        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);
        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);
        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);
        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);
        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);
        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);
        local_ac = (uchar)((ulonglong)dVar5 >> 8);
        if (quantum_info->endian == LSBEndian) {
          q[8] = SUB81(dVar5,0);
          q[0xc] = uVar18;
          q[0xd] = uVar21;
          q[9] = local_ac;
          q[10] = local_8c;
          q[0xb] = local_94;
          q[0xe] = (uchar)local_9c;
          q[0xf] = local_a4;
        }
        else {
          q[10] = uVar21;
          q[0xb] = uVar18;
          q[0xf] = SUB81(dVar5,0);
          q[0xc] = local_94;
          q[8] = local_a4;
          q[0xd] = local_8c;
          q[9] = (uchar)local_9c;
          q[0xe] = local_ac;
        }
        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +
                quantum_info->minimum;
        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);
        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);
        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);
        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);
        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);
        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);
        local_ac = (uchar)((ulonglong)dVar5 >> 8);
        if (quantum_info->endian == LSBEndian) {
          q[0x10] = SUB81(dVar5,0);
          q[0x14] = uVar21;
          q[0x11] = local_ac;
          q[0x12] = local_8c;
          q[0x13] = local_94;
          q[0x15] = uVar18;
          q[0x16] = (uchar)local_9c;
          q[0x17] = local_a4;
        }
        else {
          q[0x13] = uVar21;
          q[0x17] = SUB81(dVar5,0);
          q[0x10] = local_a4;
          q[0x11] = (uchar)local_9c;
          q[0x12] = uVar18;
          q[0x14] = local_94;
          q[0x15] = local_8c;
          q[0x16] = local_ac;
        }
        dVar5 = dVar3;
        if (image->channel_map[4].traits != UndefinedPixelTrait) {
          dVar5 = p[image->channel_map[4].offset];
        }
        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;
        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);
        local_ac = SUB81(dVar5,0);
        uVar21 = local_ac;
        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);
        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);
        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);
        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);
        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);
        local_ac = (uchar)((ulonglong)dVar5 >> 8);
        if (quantum_info->endian == LSBEndian) {
          q[0x18] = uVar21;
          q[0x1c] = uVar9;
          q[0x19] = local_ac;
          q[0x1a] = local_8c;
          q[0x1b] = local_94;
          q[0x1d] = uVar8;
          q[0x1e] = (uchar)local_9c;
        }
        else {
          q[0x1b] = uVar9;
          q[0x18] = uVar18;
          q[0x19] = (uchar)local_9c;
          q[0x1a] = uVar8;
          q[0x1c] = local_94;
          q[0x1d] = local_8c;
          q[0x1e] = local_ac;
          uVar18 = uVar21;
        }
        q[0x1f] = uVar18;
        local_b4 = local_b4 + 1;
        p = p + image->number_channels;
        q = q + quantum_info->pad + 0x20;
      } while (local_b4 != (int)number_pixels);
      return;
    }
  }
  uVar27 = 0;
  if (uVar24 < 0x41) {
    uVar27 = uVar24;
  }
  bVar16 = (byte)(uVar27 - 1);
  bVar20 = bVar16 & 0x1f;
  uVar13 = 2 << (bVar16 & 0x1f);
  uVar14 = uVar13;
  uVar28 = 0 << bVar20 | 2U >> 0x20 - bVar20;
  if ((uVar27 - 1 & 0x20) != 0) {
    uVar14 = 0;
    uVar28 = uVar13;
  }
  local_7c = uVar14 - 1;
  iStack_78 = (uVar28 - 1) + (uint)(uVar14 != 0);
LAB_00163bfb:
  if ((int)number_pixels < 1) {
    return;
  }
  local_6c = 0;
  do {
    local_84 = 0;
    pPVar19 = image->channel_map;
    if (0.0 < p[pPVar19[2].offset]) {
      fVar1 = (float)CONCAT44(iStack_78,local_7c);
      if (iStack_78 < 0) {
        fVar1 = fVar1 + DAT_002df8b0;
      }
      local_84 = -1;
      dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;
      if (dVar3 < (double)DAT_002df8b0) {
        dVar3 = dVar3 + (double)DAT_002df2b8;
        if ((double)DAT_002df2c8 <= dVar3) {
          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
        }
        else {
          local_84 = (longlong)ROUND(dVar3);
        }
      }
    }
    uVar27 = (quantum_info->state).bits;
    if (uVar27 == 0) {
      (quantum_info->state).bits = 8;
      uVar27 = 8;
    }
    if ((int)uVar24 < 1) {
      dVar3 = p[pPVar19[1].offset];
      if (!NAN(dVar3)) goto LAB_00163e10;
      local_84 = 0;
    }
    else {
      do {
        while( true ) {
          uVar28 = uVar27;
          if (uVar24 <= uVar27) {
            uVar28 = uVar24;
          }
          uVar14 = uVar24 - uVar28;
          uVar24 = 0;
          if (-1 < (int)uVar14) {
            uVar24 = uVar14;
          }
          if (uVar27 == 8) {
            *q = '\0';
          }
          uVar27 = uVar27 - uVar28;
          bVar20 = (byte)uVar24 & 0x1f;
          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;
          if ((uVar24 & 0x20) != 0) {
            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);
          }
          (quantum_info->state).bits = uVar27;
          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));
          if ((uVar27 & 0x20) != 0) {
            bVar20 = 0;
          }
          *q = *q | bVar20;
          if (uVar27 != 0) break;
          q = q + 1;
          (quantum_info->state).bits = 8;
          uVar27 = 8;
          if ((int)uVar14 < 1) goto LAB_00163de4;
        }
        uVar27 = (quantum_info->state).bits;
      } while (0 < (int)uVar14);
LAB_00163de4:
      pPVar19 = image->channel_map;
      uVar24 = quantum_info->depth;
      dVar3 = p[pPVar19[1].offset];
      if (NAN(dVar3)) {
        local_84 = 0;
      }
      else {
LAB_00163e10:
        local_84 = 0;
        if (0.0 < dVar3) {
          fVar1 = (float)CONCAT44(iStack_78,local_7c);
          if (iStack_78 < 0) {
            fVar1 = fVar1 + DAT_002df8b0;
          }
          local_84 = -1;
          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
          if (dVar3 < (double)DAT_002df8b0) {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
            }
            else {
              local_84 = (longlong)ROUND(dVar3);
            }
          }
        }
      }
      if (uVar27 == 0) {
        (quantum_info->state).bits = 8;
        uVar27 = 8;
      }
    }
    if ((int)uVar24 < 1) {
      dVar3 = p[pPVar19->offset];
      if (!NAN(dVar3)) goto LAB_00163fd8;
      local_84 = 0;
    }
    else {
      do {
        while( true ) {
          uVar28 = uVar27;
          if (uVar24 <= uVar27) {
            uVar28 = uVar24;
          }
          uVar14 = uVar24 - uVar28;
          uVar24 = 0;
          if (-1 < (int)uVar14) {
            uVar24 = uVar14;
          }
          if (uVar27 == 8) {
            *q = '\0';
          }
          uVar27 = uVar27 - uVar28;
          bVar20 = (byte)uVar24 & 0x1f;
          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;
          if ((uVar24 & 0x20) != 0) {
            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);
          }
          (quantum_info->state).bits = uVar27;
          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));
          if ((uVar27 & 0x20) != 0) {
            bVar20 = 0;
          }
          *q = *q | bVar20;
          if (uVar27 != 0) break;
          q = q + 1;
          (quantum_info->state).bits = 8;
          uVar27 = 8;
          if ((int)uVar14 < 1) goto LAB_00163fac;
        }
        uVar27 = (quantum_info->state).bits;
      } while (0 < (int)uVar14);
LAB_00163fac:
      pPVar19 = image->channel_map;
      uVar24 = quantum_info->depth;
      dVar3 = p[pPVar19->offset];
      if (NAN(dVar3)) {
        local_84 = 0;
      }
      else {
LAB_00163fd8:
        local_84 = 0;
        if (0.0 < dVar3) {
          fVar1 = (float)CONCAT44(iStack_78,local_7c);
          if (iStack_78 < 0) {
            fVar1 = fVar1 + DAT_002df8b0;
          }
          local_84 = -1;
          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
          if (dVar3 < (double)DAT_002df8b0) {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
            }
            else {
              local_84 = (longlong)ROUND(dVar3);
            }
          }
        }
      }
      if (uVar27 == 0) {
        (quantum_info->state).bits = 8;
        uVar27 = 8;
      }
    }
    if (0 < (int)uVar24) {
      do {
        while( true ) {
          uVar28 = uVar24;
          if (uVar27 <= uVar24) {
            uVar28 = uVar27;
          }
          uVar14 = uVar24 - uVar28;
          uVar24 = 0;
          if (-1 < (int)uVar14) {
            uVar24 = uVar14;
          }
          if (uVar27 == 8) {
            *q = '\0';
          }
          uVar27 = uVar27 - uVar28;
          bVar20 = (byte)uVar24 & 0x1f;
          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;
          if ((uVar24 & 0x20) != 0) {
            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);
          }
          (quantum_info->state).bits = uVar27;
          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));
          if ((uVar27 & 0x20) != 0) {
            bVar20 = 0;
          }
          *q = *q | bVar20;
          if (uVar27 != 0) break;
          q = q + 1;
          (quantum_info->state).bits = 8;
          uVar27 = 8;
          if ((int)uVar14 < 1) goto LAB_00164174;
        }
        uVar27 = (quantum_info->state).bits;
      } while (0 < (int)uVar14);
LAB_00164174:
      pPVar19 = image->channel_map;
      uVar24 = quantum_info->depth;
    }
    if (pPVar19[4].traits == UndefinedPixelTrait) {
      dVar3 = (double)DAT_002df8a8;
LAB_00164302:
      fVar1 = (float)CONCAT44(iStack_78,local_7c);
      if (iStack_78 < 0) {
        fVar1 = fVar1 + DAT_002df8b0;
      }
      local_84 = -1;
      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
      if (dVar3 < (double)DAT_002df8b0) {
        dVar3 = dVar3 + (double)DAT_002df2b8;
        if ((double)DAT_002df2c8 <= dVar3) {
          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
        }
        else {
          local_84 = (longlong)ROUND(dVar3);
        }
      }
    }
    else {
      local_84 = 0;
      dVar3 = p[pPVar19[4].offset];
      if (0.0 < dVar3) goto LAB_00164302;
    }
    if (uVar27 == 0) {
      (quantum_info->state).bits = 8;
      uVar27 = 8;
    }
    if (0 < (int)uVar24) {
      while( true ) {
        uVar28 = uVar27;
        if (uVar24 <= uVar27) {
          uVar28 = uVar24;
        }
        uVar14 = uVar24 - uVar28;
        uVar24 = 0;
        if (-1 < (int)uVar14) {
          uVar24 = uVar14;
        }
        if (uVar27 == 8) {
          *q = 0;
        }
        uVar27 = uVar27 - uVar28;
        (quantum_info->state).bits = uVar27;
        bVar20 = (byte)uVar24 & 0x1f;
        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;
        if ((uVar24 & 0x20) != 0) {
          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);
        }
        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));
        if ((uVar27 & 0x20) != 0) {
          bVar20 = 0;
        }
        *q = *q | bVar20;
        if (uVar27 == 0) {
          q = q + 1;
          (quantum_info->state).bits = 8;
        }
        if ((int)uVar14 < 1) break;
        uVar27 = (quantum_info->state).bits;
      }
    }
    local_6c = local_6c + 1;
    p = p + image->number_channels;
    q = q + quantum_info->pad;
    if (local_6c == (int)number_pixels) {
      return;
    }
    uVar24 = quantum_info->depth;
  } while( true );
}



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

void __regparm2
FUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,
            int param_7)

{
  float fVar1;
  longlong lVar2;
  double dVar3;
  float fVar4;
  double dVar5;
  char cVar6;
  char cVar7;
  byte bVar8;
  byte bVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  byte bVar13;
  int iVar14;
  byte bVar15;
  byte bVar16;
  byte bVar17;
  uint uVar18;
  int iVar19;
  uint uVar20;
  uint uVar21;
  float fVar22;
  uint local_b4;
  byte local_ac;
  byte local_a4;
  int local_9c;
  byte local_94;
  byte local_8c;
  undefined8 local_84;
  int local_7c;
  int iStack_78;
  uint local_74;
  int local_6c;
  uint local_5c;
  uint local_54;
  uint local_4c;
  uint local_44;
  uint local_34;
  
  dVar5 = DAT_002e8160;
  fVar1 = DAT_002df8a8;
  dVar3 = _DAT_002df2e0;
  if (param_7 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,
                  "ExportBGRAQuantum");
  }
  if (*(int *)(param_7 + 0x1c) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,
                  "ExportBGRAQuantum");
  }
  uVar18 = *param_2;
  if (uVar18 == 0x10) {
    if (param_2[2] == 1) {
      if (param_3 < 1) {
        return;
      }
      local_b4 = 0;
      do {
        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *
                                     (longdouble)
                                     *(double *)
                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));
        uVar18 = uVar12 >> 8 & 0xff;
        uVar20 = uVar12;
        if (param_2[0x10] == 1) {
          uVar20 = uVar18;
          uVar18 = uVar12;
        }
        *param_6 = (byte)uVar18;
        param_6[1] = (byte)uVar20;
        dVar5 = _DAT_002df2e0;
        uVar12 = FUN_001533f0((float)((longdouble)
                                      *(double *)
                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *
                                     (longdouble)_DAT_002df2e0));
        uVar18 = uVar12 >> 8 & 0xff;
        uVar20 = uVar12;
        if (param_2[0x10] == 1) {
          uVar20 = uVar18;
          uVar18 = uVar12;
        }
        param_6[2] = (byte)uVar18;
        param_6[3] = (byte)uVar20;
        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *
                                     (longdouble)
                                     *(double *)
                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));
        bVar15 = (byte)(uVar18 >> 8);
        if (param_2[0x10] == 1) {
          bVar15 = (byte)uVar18;
          uVar18 = uVar18 >> 8 & 0xff;
        }
        param_6[4] = bVar15;
        param_6[5] = (byte)uVar18;
        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {
          fVar1 = 1.0;
        }
        else {
          fVar1 = (float)((longdouble)_DAT_002df2e0 *
                         (longdouble)
                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));
        }
        uVar18 = FUN_001533f0(fVar1);
        bVar15 = (byte)(uVar18 >> 8);
        if (param_2[0x10] == 1) {
          bVar15 = (byte)uVar18;
          uVar18 = uVar18 >> 8 & 0xff;
        }
        local_b4 = local_b4 + 1;
        param_6[6] = bVar15;
        param_6[7] = (byte)uVar18;
        param_6 = param_6 + param_2[9] + 8;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
      } while (local_b4 != param_3);
      return;
    }
    if (param_3 < 1) {
      return;
    }
    local_b4 = 0;
    do {
      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);
      if (dVar3 <= 0.0) {
        iVar19 = 0;
        bVar15 = 0;
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar19 = -1;
        bVar15 = 0xff;
      }
      else {
        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        bVar15 = (byte)((uint)iVar19 >> 8);
      }
      bVar13 = bVar15;
      bVar9 = (byte)iVar19;
      if (param_2[0x10] != 1) {
        bVar13 = (byte)iVar19;
        bVar9 = bVar15;
      }
      param_6[1] = bVar13;
      *param_6 = bVar9;
      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);
      if (dVar3 <= 0.0) {
        iVar19 = 0;
        bVar15 = 0;
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar19 = -1;
        bVar15 = 0xff;
      }
      else {
        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        bVar15 = (byte)((uint)iVar19 >> 8);
      }
      bVar13 = (byte)iVar19;
      if (param_2[0x10] == 1) {
        bVar13 = bVar15;
        bVar15 = (byte)iVar19;
      }
      param_6[3] = bVar13;
      param_6[2] = bVar15;
      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);
      if (dVar3 <= 0.0) {
        iVar19 = 0;
        bVar15 = 0;
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar19 = -1;
        bVar15 = 0xff;
      }
      else {
        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        bVar15 = (byte)((uint)iVar19 >> 8);
      }
      bVar13 = (byte)iVar19;
      if (param_2[0x10] == 1) {
        bVar13 = bVar15;
        bVar15 = (byte)iVar19;
      }
      param_6[5] = bVar13;
      param_6[4] = bVar15;
      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {
LAB_00164f80:
        iVar19 = -1;
        local_ac = 0xff;
      }
      else {
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
        if (dVar3 <= 0.0) {
          iVar19 = 0;
          local_ac = 0;
        }
        else {
          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;
          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
          local_ac = (byte)((uint)iVar19 >> 8);
        }
      }
      bVar15 = (byte)iVar19;
      if (param_2[0x10] == 1) {
        bVar15 = local_ac;
        local_ac = (byte)iVar19;
      }
      param_6[7] = bVar15;
      local_b4 = local_b4 + 1;
      param_6[6] = local_ac;
      param_6 = param_6 + param_2[9] + 8;
      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
      if (local_b4 == param_3) {
        return;
      }
    } while( true );
  }
  if (uVar18 < 0x11) {
    if (uVar18 == 8) {
      if (param_3 < 1) {
        return;
      }
      iVar19 = 0;
      do {
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);
        bVar15 = 0;
        if (0.0 < dVar3) {
          dVar3 = dVar3 / (double)DAT_002e814c;
          bVar15 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        *param_6 = bVar15;
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);
        bVar15 = 0;
        if (0.0 < dVar3) {
          dVar3 = dVar3 / (double)DAT_002e814c;
          bVar15 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        param_6[1] = bVar15;
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);
        bVar15 = 0;
        if (0.0 < dVar3) {
          dVar3 = dVar3 / (double)DAT_002e814c;
          bVar15 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        param_6[2] = bVar15;
        bVar15 = 0xff;
        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
          bVar15 = 0;
          if (0.0 < dVar3) {
            dVar3 = dVar3 / (double)DAT_002e814c;
            if ((double)DAT_002e8150 <= dVar3) {
              bVar15 = 0xff;
            }
            else {
              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);
            }
          }
        }
        param_6[3] = bVar15;
        iVar19 = iVar19 + 1;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
        param_6 = param_6 + param_2[9] + 4;
      } while (iVar19 != param_3);
      return;
    }
    if (uVar18 == 10) {
      if (param_2[0xb] == 0) {
        if (param_3 < 1) {
          return;
        }
        uVar18 = 0;
        iVar19 = 0;
        do {
          iVar14 = 0;
          do {
            iVar11 = *(int *)(param_1 + 0x2a8);
            if (iVar14 == 2) {
              iVar11 = *(int *)(iVar11 + 0x20);
LAB_001644de:
              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);
            }
            else if (iVar14 == 3) {
              fVar1 = DAT_002df8a8;
              if (*(int *)(iVar11 + 0x34) != 0) {
                iVar11 = *(int *)(iVar11 + 0x38);
                goto LAB_001644de;
              }
            }
            else {
              if (iVar14 == 1) {
                iVar11 = *(int *)(iVar11 + 0x14);
              }
              else {
                iVar11 = *(int *)(iVar11 + 8);
              }
              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);
            }
            uVar20 = (uint)(iVar14 + iVar19) % 3;
            if (uVar20 == 1) {
              if (0.0 < fVar1) {
                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
                if (DAT_002df8b0 <= fVar1) {
                  uVar18 = 0xfffff000;
                }
                else {
                  fVar1 = fVar1 + DAT_002df2b8;
                  if (DAT_002df2c8 <= fVar1) {
                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                  }
                  else {
                    local_34 = (uint)(longlong)ROUND(fVar1);
                  }
                  uVar18 = uVar18 | local_34 << 0xc;
                }
              }
            }
            else if (uVar20 == 2) {
              if (0.0 < fVar1) {
                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
                if (DAT_002df8b0 <= fVar1) {
                  uVar18 = 0xfffffffc;
                }
                else {
                  fVar1 = fVar1 + DAT_002df2b8;
                  if (DAT_002df2c8 <= fVar1) {
                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                  }
                  else {
                    local_34 = (uint)(longlong)ROUND(fVar1);
                  }
                  uVar18 = uVar18 | local_34 << 2;
                }
              }
              bVar13 = (byte)(uVar18 >> 8);
              bVar15 = (byte)(uVar18 >> 0x10);
              local_a4 = (byte)(uVar18 >> 0x18);
              if (param_2[0x10] == 1) {
                *param_6 = (byte)uVar18;
                uVar18 = 0;
                param_6[2] = bVar15;
                param_6[1] = bVar13;
                param_6[3] = local_a4;
                param_6 = param_6 + 4;
              }
              else {
                param_6[3] = (byte)uVar18;
                uVar18 = 0;
                param_6[2] = bVar13;
                *param_6 = local_a4;
                param_6[1] = bVar15;
                param_6 = param_6 + 4;
              }
            }
            else if (0.0 < fVar1) {
              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
              if (DAT_002df8b0 <= fVar1) {
                uVar18 = uVar18 | 0xffc00000;
              }
              else {
                fVar1 = fVar1 + DAT_002df2b8;
                if (DAT_002df2c8 <= fVar1) {
                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                }
                else {
                  local_34 = (uint)(longlong)ROUND(fVar1);
                }
                uVar18 = uVar18 | local_34 << 0x16;
              }
            }
            iVar14 = iVar14 + 1;
          } while (iVar14 != 4);
          iVar19 = iVar19 + 4;
          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
          param_6 = param_6 + param_2[9];
          if (param_3 << 2 == iVar19) {
            return;
          }
        } while( true );
      }
      if (param_2[1] == 0x20) {
        if (param_3 < 1) {
          return;
        }
        uVar18 = param_2[0x14];
        local_9c = 0;
        local_74 = 10;
        while( true ) {
          local_b4 = 0;
          iVar19 = *(int *)(param_1 + 0x2a8);
          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);
          if (0.0 < dVar3) {
            local_b4 = 0xffffffff;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (uVar18 == 0) {
            param_2[0x14] = 0x20;
            uVar18 = 0x20;
          }
          if (0 < (int)local_74) {
            uVar20 = param_2[0x13];
            uVar12 = local_74;
            do {
              uVar21 = uVar18;
              if (uVar12 <= uVar18) {
                uVar21 = uVar12;
              }
              cVar6 = (char)uVar12;
              uVar12 = uVar12 - uVar21;
              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);
              cVar7 = (char)uVar18;
              uVar18 = uVar18 - uVar21;
              param_2[0x14] = uVar18;
              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<
                                (0x20U - cVar7 & 0x1f);
              param_2[0x13] = uVar20;
              if (uVar18 == 0) {
                bVar15 = (byte)(uVar20 >> 0x18);
                local_ac = (byte)(uVar20 >> 0x10);
                local_a4 = (byte)(uVar20 >> 8);
                if (param_2[0x10] == 1) {
                  *param_6 = (byte)uVar20;
                  param_6[3] = bVar15;
                  param_6[1] = local_a4;
                  param_6[2] = local_ac;
                }
                else {
                  *param_6 = bVar15;
                  param_6[1] = local_ac;
                  param_6[2] = local_a4;
                  param_6[3] = (byte)uVar20;
                }
                local_74 = *param_2;
                param_2[0x13] = 0;
                uVar20 = 0;
                param_2[0x14] = 0x20;
                uVar18 = 0x20;
                param_6 = param_6 + 4;
              }
            } while (0 < (int)uVar12);
            iVar19 = *(int *)(param_1 + 0x2a8);
          }
          local_b4 = 0;
          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);
          if (0.0 < dVar3) {
            local_b4 = 0xffffffff;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar20 = param_2[0x13];
            uVar12 = local_74;
            do {
              uVar21 = uVar18;
              if (uVar12 <= uVar18) {
                uVar21 = uVar12;
              }
              cVar6 = (char)uVar12;
              uVar12 = uVar12 - uVar21;
              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);
              cVar7 = (char)uVar18;
              uVar18 = uVar18 - uVar21;
              param_2[0x14] = uVar18;
              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<
                                (0x20U - cVar7 & 0x1f);
              param_2[0x13] = uVar20;
              if (uVar18 == 0) {
                bVar15 = (byte)(uVar20 >> 0x18);
                local_ac = (byte)(uVar20 >> 0x10);
                local_a4 = (byte)(uVar20 >> 8);
                if (param_2[0x10] == 1) {
                  *param_6 = (byte)uVar20;
                  param_6[3] = bVar15;
                  param_6[1] = local_a4;
                  param_6[2] = local_ac;
                }
                else {
                  *param_6 = bVar15;
                  param_6[1] = local_ac;
                  param_6[2] = local_a4;
                  param_6[3] = (byte)uVar20;
                }
                local_74 = *param_2;
                param_2[0x13] = 0;
                uVar20 = 0;
                param_2[0x14] = 0x20;
                uVar18 = 0x20;
                param_6 = param_6 + 4;
              }
            } while (0 < (int)uVar12);
            iVar19 = *(int *)(param_1 + 0x2a8);
          }
          local_b4 = 0;
          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);
          if (0.0 < dVar3) {
            local_b4 = 0xffffffff;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar20 = param_2[0x13];
            uVar12 = local_74;
            do {
              uVar21 = uVar18;
              if (uVar12 <= uVar18) {
                uVar21 = uVar12;
              }
              cVar6 = (char)uVar12;
              uVar12 = uVar12 - uVar21;
              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);
              cVar7 = (char)uVar18;
              uVar18 = uVar18 - uVar21;
              param_2[0x14] = uVar18;
              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<
                                (0x20U - cVar7 & 0x1f);
              param_2[0x13] = uVar20;
              if (uVar18 == 0) {
                bVar15 = (byte)(uVar20 >> 0x18);
                local_ac = (byte)(uVar20 >> 0x10);
                local_a4 = (byte)(uVar20 >> 8);
                if (param_2[0x10] == 1) {
                  *param_6 = (byte)uVar20;
                  param_6[3] = bVar15;
                  param_6[1] = local_a4;
                  param_6[2] = local_ac;
                }
                else {
                  *param_6 = bVar15;
                  param_6[1] = local_ac;
                  param_6[2] = local_a4;
                  param_6[3] = (byte)uVar20;
                }
                local_74 = *param_2;
                param_2[0x13] = 0;
                uVar20 = 0;
                param_2[0x14] = 0x20;
                uVar18 = 0x20;
                param_6 = param_6 + 4;
              }
            } while (0 < (int)uVar12);
            iVar19 = *(int *)(param_1 + 0x2a8);
          }
          local_b4 = 0x3ff;
          if (*(int *)(iVar19 + 0x34) != 0) {
            local_b4 = 0;
            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);
            if (0.0 < dVar3) {
              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
              if (dVar3 < (double)DAT_002df8b0) {
                dVar3 = dVar3 + (double)DAT_002df2b8;
                if ((double)DAT_002df2c8 <= dVar3) {
                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                  local_b4 = local_34;
                }
                else {
                  local_34 = (uint)(longlong)ROUND(dVar3);
                  local_b4 = local_34;
                }
              }
              else {
                local_b4 = 0xffffffff;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar20 = param_2[0x13];
            uVar12 = local_74;
            while( true ) {
              uVar21 = uVar18;
              if (local_74 <= uVar18) {
                uVar21 = local_74;
              }
              cVar6 = (char)local_74;
              local_74 = local_74 - uVar21;
              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);
              cVar7 = (char)uVar18;
              uVar18 = uVar18 - uVar21;
              param_2[0x14] = uVar18;
              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<
                                (0x20U - cVar7 & 0x1f);
              param_2[0x13] = uVar20;
              if (uVar18 == 0) {
                bVar15 = (byte)(uVar20 >> 0x18);
                local_ac = (byte)(uVar20 >> 0x10);
                local_a4 = (byte)(uVar20 >> 8);
                if (param_2[0x10] == 1) {
                  *param_6 = (byte)uVar20;
                  param_6[3] = bVar15;
                  param_6[1] = local_a4;
                  param_6[2] = local_ac;
                }
                else {
                  *param_6 = bVar15;
                  param_6[1] = local_ac;
                  param_6[2] = local_a4;
                  param_6[3] = (byte)uVar20;
                }
                param_2[0x13] = 0;
                uVar20 = 0;
                uVar18 = 0x20;
                param_2[0x14] = 0x20;
                param_6 = param_6 + 4;
              }
              if ((int)local_74 < 1) break;
              uVar12 = *param_2;
            }
          }
          local_9c = local_9c + 1;
          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
          param_6 = param_6 + param_2[9];
          if (local_9c == param_3) break;
          local_74 = *param_2;
        }
        return;
      }
      iVar19 = 0;
      if (param_3 < 1) {
        return;
      }
      uVar18 = 10;
      do {
        iVar14 = *(int *)(param_1 + 0x2a8);
        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);
        if (dVar3 <= 0.0) {
          local_4c = 0;
        }
        else {
          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
          if ((double)DAT_002df8b0 <= dVar3) {
            local_4c = 0xffffffff;
          }
          else {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_4c = local_34;
            }
            else {
              local_34 = (uint)(longlong)ROUND(dVar3);
              local_4c = local_34;
            }
          }
        }
        uVar20 = param_2[0x14];
        if (uVar20 == 0) {
          param_2[0x14] = 8;
          uVar20 = 8;
        }
        if ((int)uVar18 < 1) {
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);
          if (!NAN(dVar3)) goto LAB_00165390;
          local_54 = 0;
        }
        else {
          do {
            while( true ) {
              uVar12 = uVar20;
              if (uVar18 <= uVar20) {
                uVar12 = uVar18;
              }
              uVar21 = uVar18 - uVar12;
              uVar18 = 0;
              if (-1 < (int)uVar21) {
                uVar18 = uVar21;
              }
              if (uVar20 == 8) {
                *param_6 = 0;
              }
              uVar20 = uVar20 - uVar12;
              bVar15 = (byte)uVar18 & 0x1f;
              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;
              if ((uVar18 & 0x20) != 0) {
                uVar10 = 0 >> ((byte)uVar18 & 0x1f);
              }
              param_2[0x14] = uVar20;
              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
              if ((uVar20 & 0x20) != 0) {
                bVar15 = 0;
              }
              *param_6 = *param_6 | bVar15;
              if (uVar20 != 0) break;
              param_6 = param_6 + 1;
              param_2[0x14] = 8;
              uVar20 = 8;
              if ((int)uVar21 < 1) goto LAB_00165364;
            }
            uVar20 = param_2[0x14];
          } while (0 < (int)uVar21);
LAB_00165364:
          iVar14 = *(int *)(param_1 + 0x2a8);
          uVar18 = *param_2;
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);
          if (NAN(dVar3)) {
LAB_00165e72:
            local_54 = 0;
          }
          else {
LAB_00165390:
            if (dVar3 <= 0.0) goto LAB_00165e72;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if ((double)DAT_002df8b0 <= dVar3) {
              local_54 = 0xffffffff;
            }
            else {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_54 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_54 = local_34;
              }
            }
          }
          if (uVar20 == 0) {
            param_2[0x14] = 8;
            uVar20 = 8;
          }
        }
        if ((int)uVar18 < 1) {
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);
          if (!NAN(dVar3)) goto LAB_00165520;
          local_5c = 0;
        }
        else {
          do {
            while( true ) {
              uVar12 = uVar20;
              if (uVar18 <= uVar20) {
                uVar12 = uVar18;
              }
              uVar21 = uVar18 - uVar12;
              uVar18 = 0;
              if (-1 < (int)uVar21) {
                uVar18 = uVar21;
              }
              if (uVar20 == 8) {
                *param_6 = 0;
              }
              uVar20 = uVar20 - uVar12;
              bVar15 = (byte)uVar18 & 0x1f;
              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;
              if ((uVar18 & 0x20) != 0) {
                uVar10 = 0 >> ((byte)uVar18 & 0x1f);
              }
              param_2[0x14] = uVar20;
              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
              if ((uVar20 & 0x20) != 0) {
                bVar15 = 0;
              }
              *param_6 = *param_6 | bVar15;
              if (uVar20 != 0) break;
              param_6 = param_6 + 1;
              param_2[0x14] = 8;
              uVar20 = 8;
              if ((int)uVar21 < 1) goto LAB_001654f4;
            }
            uVar20 = param_2[0x14];
          } while (0 < (int)uVar21);
LAB_001654f4:
          iVar14 = *(int *)(param_1 + 0x2a8);
          uVar18 = *param_2;
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);
          if (NAN(dVar3)) {
LAB_00165e52:
            local_5c = 0;
          }
          else {
LAB_00165520:
            if (dVar3 <= 0.0) goto LAB_00165e52;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if ((double)DAT_002df8b0 <= dVar3) {
              local_5c = 0xffffffff;
            }
            else {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_5c = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_5c = local_34;
              }
            }
          }
          if (uVar20 == 0) {
            param_2[0x14] = 8;
            uVar20 = 8;
          }
        }
        if (0 < (int)uVar18) {
          do {
            while( true ) {
              uVar12 = uVar20;
              if (uVar18 <= uVar20) {
                uVar12 = uVar18;
              }
              uVar21 = uVar18 - uVar12;
              uVar18 = 0;
              if (-1 < (int)uVar21) {
                uVar18 = uVar21;
              }
              if (uVar20 == 8) {
                *param_6 = 0;
              }
              uVar20 = uVar20 - uVar12;
              bVar15 = (byte)uVar18 & 0x1f;
              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;
              if ((uVar18 & 0x20) != 0) {
                uVar10 = 0 >> ((byte)uVar18 & 0x1f);
              }
              param_2[0x14] = uVar20;
              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
              if ((uVar20 & 0x20) != 0) {
                bVar15 = 0;
              }
              *param_6 = *param_6 | bVar15;
              if (uVar20 != 0) break;
              param_6 = param_6 + 1;
              param_2[0x14] = 8;
              uVar20 = 8;
              if ((int)uVar21 < 1) goto LAB_00165684;
            }
            uVar20 = param_2[0x14];
          } while (0 < (int)uVar21);
LAB_00165684:
          iVar14 = *(int *)(param_1 + 0x2a8);
          uVar18 = *param_2;
        }
        if (*(int *)(iVar14 + 0x34) == 0) {
          local_44 = 0x3ff;
        }
        else {
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);
          if (dVar3 <= 0.0) {
            local_44 = 0;
          }
          else {
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_44 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_44 = local_34;
              }
            }
            else {
              local_44 = 0xffffffff;
            }
          }
        }
        if (uVar20 == 0) {
          param_2[0x14] = 8;
          uVar20 = 8;
        }
        if (0 < (int)uVar18) {
          while( true ) {
            uVar12 = uVar20;
            if (uVar18 <= uVar20) {
              uVar12 = uVar18;
            }
            uVar21 = uVar18 - uVar12;
            uVar18 = 0;
            if (-1 < (int)uVar21) {
              uVar18 = uVar21;
            }
            if (uVar20 == 8) {
              *param_6 = 0;
            }
            uVar20 = uVar20 - uVar12;
            param_2[0x14] = uVar20;
            bVar15 = (byte)uVar18 & 0x1f;
            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;
            if ((uVar18 & 0x20) != 0) {
              uVar10 = 0 >> ((byte)uVar18 & 0x1f);
            }
            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
            if ((uVar20 & 0x20) != 0) {
              bVar15 = 0;
            }
            *param_6 = *param_6 | bVar15;
            if (uVar20 == 0) {
              param_6 = param_6 + 1;
              param_2[0x14] = 8;
            }
            if ((int)uVar21 < 1) break;
            uVar20 = param_2[0x14];
          }
        }
        iVar19 = iVar19 + 1;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
        param_6 = param_6 + param_2[9];
        if (iVar19 == param_3) {
          return;
        }
        uVar18 = *param_2;
      } while( true );
    }
LAB_001642d0:
    local_7c = 0;
    iStack_78 = 0;
    if (uVar18 == 0) goto LAB_00163bfb;
  }
  else {
    if (uVar18 == 0x20) {
      if (param_2[2] == 1) {
        if (param_3 < 1) {
          return;
        }
        local_b4 = 0;
        do {
          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *
                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);
          bVar15 = (byte)((uint)fVar4 >> 8);
          bVar9 = (byte)((uint)fVar4 >> 0x10);
          bVar13 = (byte)((uint)fVar4 >> 0x18);
          if (param_2[0x10] == 1) {
            *param_6 = SUB41(fVar4,0);
            param_6[1] = bVar15;
            param_6[2] = bVar9;
            param_6[3] = bVar13;
          }
          else {
            param_6[1] = bVar9;
            *param_6 = bVar13;
            param_6[2] = bVar15;
            param_6[3] = SUB41(fVar4,0);
          }
          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *
                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);
          bVar15 = (byte)((uint)fVar4 >> 8);
          bVar9 = (byte)((uint)fVar4 >> 0x10);
          bVar13 = (byte)((uint)fVar4 >> 0x18);
          if (param_2[0x10] == 1) {
            param_6[4] = SUB41(fVar4,0);
            param_6[6] = bVar9;
            param_6[5] = bVar15;
            param_6[7] = bVar13;
          }
          else {
            param_6[5] = bVar9;
            param_6[4] = bVar13;
            param_6[6] = bVar15;
            param_6[7] = SUB41(fVar4,0);
          }
          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *
                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);
          bVar15 = (byte)((uint)fVar4 >> 8);
          bVar9 = (byte)((uint)fVar4 >> 0x18);
          bVar13 = (byte)((uint)fVar4 >> 0x10);
          if (param_2[0x10] == 1) {
            param_6[8] = SUB41(fVar4,0);
            param_6[10] = bVar13;
            param_6[9] = bVar15;
            param_6[0xb] = bVar9;
          }
          else {
            param_6[10] = bVar15;
            param_6[8] = bVar9;
            param_6[9] = bVar13;
            param_6[0xb] = SUB41(fVar4,0);
          }
          fVar4 = fVar1;
          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
          }
          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);
          bVar15 = (byte)((uint)fVar4 >> 8);
          fVar22 = (float)((uint)fVar4 >> 0x18);
          bVar13 = (byte)((uint)fVar4 >> 0x10);
          if (param_2[0x10] == 1) {
            param_6[0xc] = SUB41(fVar4,0);
            param_6[0xe] = bVar13;
            param_6[0xd] = bVar15;
          }
          else {
            param_6[0xe] = bVar15;
            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);
            param_6[0xd] = bVar13;
            fVar22 = fVar4;
          }
          param_6[0xf] = SUB41(fVar22,0);
          local_b4 = local_b4 + 1;
          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
          param_6 = param_6 + param_2[9] + 0x10;
        } while (local_b4 != param_3);
        return;
      }
      if (param_3 < 1) {
        return;
      }
      local_b4 = 0;
      do {
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);
        if (dVar3 <= 0.0) {
          bVar15 = 0;
          local_34._0_1_ = 0;
          bVar13 = 0;
          bVar17 = 0;
          bVar9 = 0;
          bVar8 = 0;
          if (param_2[0x10] == 1) goto LAB_00164d14;
LAB_00164af3:
          param_6[1] = bVar9;
          *param_6 = bVar8;
          param_6[2] = bVar17;
          param_6[3] = (byte)local_34;
        }
        else {
          dVar3 = dVar3 * (double)DAT_002e8148;
          if (dVar5 <= dVar3) {
            local_34._0_1_ = 0xff;
            bVar17 = 0xff;
            bVar9 = 0xff;
            bVar8 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (byte)lVar2;
            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);
            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);
            bVar17 = (byte)((ulonglong)lVar2 >> 8);
          }
          bVar15 = (byte)local_34;
          bVar13 = bVar17;
          if (param_2[0x10] != 1) goto LAB_00164af3;
LAB_00164d14:
          *param_6 = bVar15;
          param_6[1] = bVar13;
          param_6[2] = bVar9;
          param_6[3] = bVar8;
        }
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);
        if (dVar3 <= 0.0) {
          bVar15 = 0;
          local_34._0_1_ = 0;
          bVar9 = 0;
          bVar16 = 0;
          bVar8 = 0;
          bVar13 = 0;
          bVar17 = 0;
          if (param_2[0x10] == 1) goto LAB_00164ce4;
LAB_00164b98:
          param_6[4] = bVar17;
          param_6[5] = bVar8;
          param_6[6] = bVar16;
          param_6[7] = (byte)local_34;
        }
        else {
          dVar3 = dVar3 * (double)DAT_002e8148;
          if (DAT_002e8160 <= dVar3) {
            local_34._0_1_ = 0xff;
            bVar16 = 0xff;
            bVar8 = 0xff;
            bVar17 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (byte)lVar2;
            bVar16 = (byte)((ulonglong)lVar2 >> 8);
            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);
            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);
          }
          bVar15 = (byte)local_34;
          bVar13 = bVar17;
          bVar9 = bVar16;
          if (param_2[0x10] != 1) goto LAB_00164b98;
LAB_00164ce4:
          param_6[4] = bVar15;
          param_6[5] = bVar9;
          param_6[6] = bVar8;
          param_6[7] = bVar13;
        }
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);
        if (dVar3 <= 0.0) {
          bVar15 = 0;
          local_34._0_1_ = 0;
          bVar13 = 0;
          bVar16 = 0;
          bVar8 = 0;
          bVar9 = 0;
          bVar17 = 0;
          if (param_2[0x10] == 1) goto LAB_00164cb8;
LAB_00164c3f:
          param_6[10] = bVar16;
          param_6[8] = bVar17;
          param_6[9] = bVar8;
          param_6[0xb] = (byte)local_34;
        }
        else {
          dVar3 = dVar3 * (double)DAT_002e8148;
          if (DAT_002e8160 <= dVar3) {
            local_34._0_1_ = 0xff;
            bVar16 = 0xff;
            bVar8 = 0xff;
            bVar17 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (byte)lVar2;
            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);
            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);
            bVar16 = (byte)((ulonglong)lVar2 >> 8);
          }
          bVar15 = (byte)local_34;
          bVar13 = bVar16;
          bVar9 = bVar17;
          if (param_2[0x10] != 1) goto LAB_00164c3f;
LAB_00164cb8:
          param_6[8] = bVar15;
          param_6[9] = bVar13;
          param_6[10] = bVar8;
          param_6[0xb] = bVar9;
        }
        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {
LAB_00164c70:
          local_34._0_1_ = 0xff;
          bVar9 = 0xff;
          bVar13 = 0xff;
          bVar15 = 0xff;
          bVar8 = (byte)local_34;
          bVar17 = 0xff;
          bVar16 = 0xff;
          if (param_2[0x10] != 1) goto LAB_00164a1f;
LAB_00164c8e:
          bVar8 = bVar15;
          param_6[0xc] = (byte)local_34;
          param_6[0xd] = bVar9;
          param_6[0xe] = bVar17;
        }
        else {
          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
          if (dVar3 <= 0.0) {
            local_34._0_1_ = 0;
            bVar9 = 0;
            bVar13 = 0;
            bVar15 = 0;
          }
          else {
            dVar3 = dVar3 * (double)DAT_002e8148;
            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (byte)lVar2;
            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);
            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);
            bVar9 = (byte)((ulonglong)lVar2 >> 8);
          }
          bVar8 = (byte)local_34;
          bVar17 = bVar13;
          bVar16 = bVar9;
          if (param_2[0x10] == 1) goto LAB_00164c8e;
LAB_00164a1f:
          param_6[0xd] = bVar13;
          param_6[0xc] = bVar15;
          param_6[0xe] = bVar16;
        }
        param_6[0xf] = bVar8;
        local_b4 = local_b4 + 1;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
        param_6 = param_6 + param_2[9] + 0x10;
        if (local_b4 == param_3) {
          return;
        }
      } while( true );
    }
    if (uVar18 != 0x40) goto LAB_001642d0;
    if (param_2[2] == 1) {
      local_b4 = 0;
      dVar3 = (double)DAT_002df8a8;
      if (param_3 < 1) {
        return;
      }
      do {
        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *
                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);
        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);
        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);
        local_94 = (byte)((ulonglong)dVar5 >> 0x18);
        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);
        local_8c = (byte)((ulonglong)dVar5 >> 0x10);
        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);
        local_ac = (byte)((ulonglong)dVar5 >> 8);
        if (param_2[0x10] == 1) {
          *param_6 = SUB81(dVar5,0);
          param_6[4] = bVar13;
          param_6[5] = bVar15;
          param_6[1] = local_ac;
          param_6[2] = local_8c;
          param_6[3] = local_94;
          param_6[6] = (byte)local_9c;
          param_6[7] = local_a4;
        }
        else {
          param_6[2] = bVar15;
          param_6[3] = bVar13;
          param_6[7] = SUB81(dVar5,0);
          param_6[4] = local_94;
          *param_6 = local_a4;
          param_6[5] = local_8c;
          param_6[1] = (byte)local_9c;
          param_6[6] = local_ac;
        }
        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *
                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);
        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);
        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);
        local_94 = (byte)((ulonglong)dVar5 >> 0x18);
        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);
        local_8c = (byte)((ulonglong)dVar5 >> 0x10);
        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);
        local_ac = (byte)((ulonglong)dVar5 >> 8);
        if (param_2[0x10] == 1) {
          param_6[8] = SUB81(dVar5,0);
          param_6[0xc] = bVar13;
          param_6[0xd] = bVar15;
          param_6[9] = local_ac;
          param_6[10] = local_8c;
          param_6[0xb] = local_94;
          param_6[0xe] = (byte)local_9c;
          param_6[0xf] = local_a4;
        }
        else {
          param_6[10] = bVar15;
          param_6[0xb] = bVar13;
          param_6[0xf] = SUB81(dVar5,0);
          param_6[0xc] = local_94;
          param_6[8] = local_a4;
          param_6[0xd] = local_8c;
          param_6[9] = (byte)local_9c;
          param_6[0xe] = local_ac;
        }
        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *
                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);
        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);
        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);
        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);
        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);
        local_94 = (byte)((ulonglong)dVar5 >> 0x18);
        local_8c = (byte)((ulonglong)dVar5 >> 0x10);
        local_ac = (byte)((ulonglong)dVar5 >> 8);
        if (param_2[0x10] == 1) {
          param_6[0x10] = SUB81(dVar5,0);
          param_6[0x14] = bVar15;
          param_6[0x11] = local_ac;
          param_6[0x12] = local_8c;
          param_6[0x13] = local_94;
          param_6[0x15] = bVar13;
          param_6[0x16] = (byte)local_9c;
          param_6[0x17] = local_a4;
        }
        else {
          param_6[0x13] = bVar15;
          param_6[0x17] = SUB81(dVar5,0);
          param_6[0x10] = local_a4;
          param_6[0x11] = (byte)local_9c;
          param_6[0x12] = bVar13;
          param_6[0x14] = local_94;
          param_6[0x15] = local_8c;
          param_6[0x16] = local_ac;
        }
        dVar5 = dVar3;
        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
        }
        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);
        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);
        local_ac = SUB81(dVar5,0);
        bVar15 = local_ac;
        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);
        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);
        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);
        local_94 = (byte)((ulonglong)dVar5 >> 0x18);
        local_8c = (byte)((ulonglong)dVar5 >> 0x10);
        local_ac = (byte)((ulonglong)dVar5 >> 8);
        if (param_2[0x10] == 1) {
          param_6[0x18] = bVar15;
          param_6[0x1c] = bVar9;
          param_6[0x19] = local_ac;
          param_6[0x1a] = local_8c;
          param_6[0x1b] = local_94;
          param_6[0x1d] = bVar8;
          param_6[0x1e] = (byte)local_9c;
        }
        else {
          param_6[0x1b] = bVar9;
          param_6[0x18] = bVar13;
          param_6[0x19] = (byte)local_9c;
          param_6[0x1a] = bVar8;
          param_6[0x1c] = local_94;
          param_6[0x1d] = local_8c;
          param_6[0x1e] = local_ac;
          bVar13 = bVar15;
        }
        param_6[0x1f] = bVar13;
        local_b4 = local_b4 + 1;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
        param_6 = param_6 + param_2[9] + 0x20;
      } while (local_b4 != param_3);
      return;
    }
  }
  uVar20 = 0;
  if (uVar18 < 0x41) {
    uVar20 = uVar18;
  }
  bVar13 = (byte)(uVar20 - 1);
  bVar15 = bVar13 & 0x1f;
  uVar10 = 2 << (bVar13 & 0x1f);
  uVar21 = uVar10;
  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;
  if ((uVar20 - 1 & 0x20) != 0) {
    uVar21 = 0;
    uVar12 = uVar10;
  }
  local_7c = uVar21 - 1;
  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);
LAB_00163bfb:
  if (param_3 < 1) {
    return;
  }
  local_6c = 0;
  do {
    local_84 = 0;
    iVar19 = *(int *)(param_1 + 0x2a8);
    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);
    if (0.0 < dVar3) {
      fVar1 = (float)CONCAT44(iStack_78,local_7c);
      if (iStack_78 < 0) {
        fVar1 = fVar1 + DAT_002df8b0;
      }
      local_84 = -1;
      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
      if (dVar3 < (double)DAT_002df8b0) {
        dVar3 = dVar3 + (double)DAT_002df2b8;
        if ((double)DAT_002df2c8 <= dVar3) {
          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
        }
        else {
          local_84 = (longlong)ROUND(dVar3);
        }
      }
    }
    uVar20 = param_2[0x14];
    if (uVar20 == 0) {
      param_2[0x14] = 8;
      uVar20 = 8;
    }
    if ((int)uVar18 < 1) {
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);
      if (!NAN(dVar3)) goto LAB_00163e10;
      local_84 = 0;
    }
    else {
      do {
        while( true ) {
          uVar12 = uVar20;
          if (uVar18 <= uVar20) {
            uVar12 = uVar18;
          }
          uVar21 = uVar18 - uVar12;
          uVar18 = 0;
          if (-1 < (int)uVar21) {
            uVar18 = uVar21;
          }
          if (uVar20 == 8) {
            *param_6 = 0;
          }
          uVar20 = uVar20 - uVar12;
          bVar15 = (byte)uVar18 & 0x1f;
          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;
          if ((uVar18 & 0x20) != 0) {
            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);
          }
          param_2[0x14] = uVar20;
          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
          if ((uVar20 & 0x20) != 0) {
            bVar15 = 0;
          }
          *param_6 = *param_6 | bVar15;
          if (uVar20 != 0) break;
          param_6 = param_6 + 1;
          param_2[0x14] = 8;
          uVar20 = 8;
          if ((int)uVar21 < 1) goto LAB_00163de4;
        }
        uVar20 = param_2[0x14];
      } while (0 < (int)uVar21);
LAB_00163de4:
      iVar19 = *(int *)(param_1 + 0x2a8);
      uVar18 = *param_2;
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);
      if (NAN(dVar3)) {
        local_84 = 0;
      }
      else {
LAB_00163e10:
        local_84 = 0;
        if (0.0 < dVar3) {
          fVar1 = (float)CONCAT44(iStack_78,local_7c);
          if (iStack_78 < 0) {
            fVar1 = fVar1 + DAT_002df8b0;
          }
          local_84 = -1;
          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
          if (dVar3 < (double)DAT_002df8b0) {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
            }
            else {
              local_84 = (longlong)ROUND(dVar3);
            }
          }
        }
      }
      if (uVar20 == 0) {
        param_2[0x14] = 8;
        uVar20 = 8;
      }
    }
    if ((int)uVar18 < 1) {
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);
      if (!NAN(dVar3)) goto LAB_00163fd8;
      local_84 = 0;
    }
    else {
      do {
        while( true ) {
          uVar12 = uVar20;
          if (uVar18 <= uVar20) {
            uVar12 = uVar18;
          }
          uVar21 = uVar18 - uVar12;
          uVar18 = 0;
          if (-1 < (int)uVar21) {
            uVar18 = uVar21;
          }
          if (uVar20 == 8) {
            *param_6 = 0;
          }
          uVar20 = uVar20 - uVar12;
          bVar15 = (byte)uVar18 & 0x1f;
          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;
          if ((uVar18 & 0x20) != 0) {
            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);
          }
          param_2[0x14] = uVar20;
          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
          if ((uVar20 & 0x20) != 0) {
            bVar15 = 0;
          }
          *param_6 = *param_6 | bVar15;
          if (uVar20 != 0) break;
          param_6 = param_6 + 1;
          param_2[0x14] = 8;
          uVar20 = 8;
          if ((int)uVar21 < 1) goto LAB_00163fac;
        }
        uVar20 = param_2[0x14];
      } while (0 < (int)uVar21);
LAB_00163fac:
      iVar19 = *(int *)(param_1 + 0x2a8);
      uVar18 = *param_2;
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);
      if (NAN(dVar3)) {
        local_84 = 0;
      }
      else {
LAB_00163fd8:
        local_84 = 0;
        if (0.0 < dVar3) {
          fVar1 = (float)CONCAT44(iStack_78,local_7c);
          if (iStack_78 < 0) {
            fVar1 = fVar1 + DAT_002df8b0;
          }
          local_84 = -1;
          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
          if (dVar3 < (double)DAT_002df8b0) {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
            }
            else {
              local_84 = (longlong)ROUND(dVar3);
            }
          }
        }
      }
      if (uVar20 == 0) {
        param_2[0x14] = 8;
        uVar20 = 8;
      }
    }
    if (0 < (int)uVar18) {
      do {
        while( true ) {
          uVar12 = uVar18;
          if (uVar20 <= uVar18) {
            uVar12 = uVar20;
          }
          uVar21 = uVar18 - uVar12;
          uVar18 = 0;
          if (-1 < (int)uVar21) {
            uVar18 = uVar21;
          }
          if (uVar20 == 8) {
            *param_6 = 0;
          }
          uVar20 = uVar20 - uVar12;
          bVar15 = (byte)uVar18 & 0x1f;
          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;
          if ((uVar18 & 0x20) != 0) {
            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);
          }
          param_2[0x14] = uVar20;
          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
          if ((uVar20 & 0x20) != 0) {
            bVar15 = 0;
          }
          *param_6 = *param_6 | bVar15;
          if (uVar20 != 0) break;
          param_6 = param_6 + 1;
          param_2[0x14] = 8;
          uVar20 = 8;
          if ((int)uVar21 < 1) goto LAB_00164174;
        }
        uVar20 = param_2[0x14];
      } while (0 < (int)uVar21);
LAB_00164174:
      iVar19 = *(int *)(param_1 + 0x2a8);
      uVar18 = *param_2;
    }
    if (*(int *)(iVar19 + 0x34) == 0) {
      dVar3 = (double)DAT_002df8a8;
LAB_00164302:
      fVar1 = (float)CONCAT44(iStack_78,local_7c);
      if (iStack_78 < 0) {
        fVar1 = fVar1 + DAT_002df8b0;
      }
      local_84 = -1;
      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
      if (dVar3 < (double)DAT_002df8b0) {
        dVar3 = dVar3 + (double)DAT_002df2b8;
        if ((double)DAT_002df2c8 <= dVar3) {
          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
        }
        else {
          local_84 = (longlong)ROUND(dVar3);
        }
      }
    }
    else {
      local_84 = 0;
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);
      if (0.0 < dVar3) goto LAB_00164302;
    }
    if (uVar20 == 0) {
      param_2[0x14] = 8;
      uVar20 = 8;
    }
    if (0 < (int)uVar18) {
      while( true ) {
        uVar12 = uVar20;
        if (uVar18 <= uVar20) {
          uVar12 = uVar18;
        }
        uVar21 = uVar18 - uVar12;
        uVar18 = 0;
        if (-1 < (int)uVar21) {
          uVar18 = uVar21;
        }
        if (uVar20 == 8) {
          *param_6 = 0;
        }
        uVar20 = uVar20 - uVar12;
        param_2[0x14] = uVar20;
        bVar15 = (byte)uVar18 & 0x1f;
        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;
        if ((uVar18 & 0x20) != 0) {
          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);
        }
        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
        if ((uVar20 & 0x20) != 0) {
          bVar15 = 0;
        }
        *param_6 = *param_6 | bVar15;
        if (uVar20 == 0) {
          param_6 = param_6 + 1;
          param_2[0x14] = 8;
        }
        if ((int)uVar21 < 1) break;
        uVar20 = param_2[0x14];
      }
    }
    local_6c = local_6c + 1;
    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
    param_6 = param_6 + param_2[9];
    if (local_6c == param_3) {
      return;
    }
    uVar18 = *param_2;
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00039d70
ADD EBX,0x2ba6d7
SUB ESP,0xac
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [ESP + 0xc0]
MOV ESI,dword ptr [ESP + 0xcc]
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [ESP + 0xd0]
MOV dword ptr [ESP + 0x30],EBX
TEST EAX,EAX
JZ 0x0016698a
CMP dword ptr [EAX + 0x1c],0xabacadab
JNZ 0x00166967
MOV EAX,dword ptr [EDX]
MOV EBP,EDX
MOV dword ptr [ESP + 0x48],EAX
CMP EAX,0x10
JZ 0x00164d30
JA 0x00163ba8
CMP EAX,0x8
JZ 0x00164730
CMP EAX,0xa
JNZ 0x001642d0
MOV ECX,dword ptr [EDX + 0x2c]
TEST ECX,ECX
JNZ 0x001651b1
MOV EAX,dword ptr [ESP + 0x4c]
TEST EAX,EAX
JLE 0x00163b9a
SHL EAX,0x2
XOR EDI,EDI
MOV dword ptr [ESP + 0x10],EDX
MOV dword ptr [ESP + 0x20],EAX
XOR EAX,EAX
MOV EBX,EDI
MOV EBP,EAX
NOP
XOR ECX,ECX
MOV EAX,dword ptr [ESP + 0x34]
LEA EDI,[ECX + EBP*0x1]
MOV EAX,dword ptr [EAX + 0x2a8]
CMP ECX,0x2
JZ 0x00164538
CMP ECX,0x3
JZ 0x001644d0
CMP ECX,0x1
JZ 0x001644c0
MOV EAX,dword ptr [EAX + 0x8]
MOV EDX,dword ptr [ESP + 0xc8]
FLD qword ptr [EDX + EAX*0x8]
MOV dword ptr [ESP + 0xc],0x0
FNSTCW word ptr [ESP + 0x92]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x8],EAX
FILD qword ptr [ESP + 0x8]
MOV EAX,0xaaaaaaab
MUL EDI
SHR EDX,0x1
LEA EAX,[EDX + EDX*0x2]
SUB EDI,EAX
CMP EDI,0x1
JZ 0x00164430
CMP EDI,0x2
JNZ 0x001643a0
FUCOMI ST0,ST0
JP 0x00163ade
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00163ae8
FMUL dword ptr [EAX + 0xffee77bc]
FDIV dword ptr [EAX + 0xffec18a8]
FLD dword ptr [EAX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x0016519a
FADD dword ptr [EAX + 0xffec12b8]
FLD dword ptr [EAX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x00165150
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
SHL EAX,0x2
OR EBX,EAX
JMP 0x00163aea
FSTP ST0
JMP 0x00163aea
FSTP ST0
LEA EAX,[ESI + 0x4]
MOV EDX,EBX
MOV EDI,EBX
MOV dword ptr [ESP + 0x8],EAX
SHR EDX,0x8
MOV EAX,EBX
SHR EDI,0x10
SHR EAX,0x18
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x10]
CMP dword ptr [EAX + 0x40],0x1
JZ 0x001650b0
MOVZX EAX,byte ptr [ESP + 0x18]
MOV byte ptr [ESI + 0x3],BL
XOR EBX,EBX
MOV byte ptr [ESI + 0x2],DL
MOV byte ptr [ESI],AL
MOV EAX,EDI
MOV byte ptr [ESI + 0x1],AL
MOV ESI,dword ptr [ESP + 0x8]
JMP 0x00163b48
FSTP ST0
JMP 0x00163b48
FSTP ST0
JMP 0x00163b48
FSTP ST0
JMP 0x00163b48
FSTP ST0
LEA ESI,[ESI]
ADD ECX,0x1
CMP ECX,0x4
JNZ 0x001639c2
MOV EAX,dword ptr [ESP + 0x34]
ADD EBP,0x4
MOV EDX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x298]
LEA EAX,[EDX + EAX*0x8]
MOV dword ptr [ESP + 0xc8],EAX
MOV EAX,dword ptr [ESP + 0x10]
ADD ESI,dword ptr [EAX + 0x24]
CMP dword ptr [ESP + 0x20],EBP
JNZ 0x001639c0
JMP 0x00163b9a
FSTP ST0
JMP 0x00163b9a
FSTP ST0
JMP 0x00163b9a
FSTP ST0
JMP 0x00163b9a
FSTP ST0
JMP 0x00163b9a
FSTP ST0
ADD ESP,0xac
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EAX,0x20
JZ 0x001649c0
CMP EAX,0x40
JNZ 0x001642d0
CMP dword ptr [EDX + 0x8],0x1
JZ 0x00165b5e
MOV EAX,dword ptr [ESP + 0x48]
MOV ECX,0x40
CMP EAX,0x40
CMOVBE ECX,EAX
MOV EAX,0x2
XOR EDX,EDX
XOR EDI,EDI
SUB ECX,0x1
SHLD EDX,EAX,CL
SHL EAX,CL
TEST CL,0x20
CMOVNZ EDX,EAX
CMOVNZ EAX,EDI
ADD EAX,-0x1
ADC EDX,-0x1
MOV dword ptr [ESP + 0x40],EAX
MOV dword ptr [ESP + 0x44],EDX
MOV EBX,dword ptr [ESP + 0x4c]
TEST EBX,EBX
JLE 0x00163b9a
MOV dword ptr [ESP + 0x8],EBP
MOV EBP,ESI
MOV ESI,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x50],0x0
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x38],0x0
MOV EDX,dword ptr [ESP + 0xc8]
MOV dword ptr [ESP + 0x3c],0x0
MOV EBX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EBX + 0x20]
FLD qword ptr [EDX + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00163ce8
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00163cf0
MOV ECX,dword ptr [ESP + 0x44]
FILD qword ptr [ESP + 0x40]
TEST ECX,ECX
JNS 0x00163c67
FADD dword ptr [EAX + 0xffec18b0]
FSTP qword ptr [ESP + 0x98]
FLD qword ptr [ESP + 0x98]
FMULP
MOV dword ptr [ESP + 0x38],0xffffffff
MOV dword ptr [ESP + 0x3c],0xffffffff
FDIV dword ptr [EAX + 0xffec18a8]
FLD dword ptr [EAX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00163cf8
FADD dword ptr [EAX + 0xffec12b8]
FLD dword ptr [EAX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x00164600
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x38]
FLDCW word ptr [ESP + 0x92]
JMP 0x00163d00
FSTP ST0
JMP 0x00163d00
FSTP ST0
JMP 0x00163d00
FSTP ST0
LEA ESI,[ESI]
MOV EDI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EDI + 0x50]
TEST EAX,EAX
JNZ 0x00163d17
MOV dword ptr [EDI + 0x50],0x8
MOV EAX,0x8
TEST ESI,ESI
JLE 0x001646f0
MOV dword ptr [ESP + 0xcc],EBP
JMP 0x00163d43
MOV EBX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EBX + 0x50]
MOV EBX,dword ptr [ESP + 0x48]
TEST EBX,EBX
JLE 0x00163de4
CMP ESI,EAX
MOV ECX,EAX
MOV EDI,ESI
CMOVBE ECX,ESI
MOV ESI,0x0
SUB EDI,ECX
CMOVNS ESI,EDI
MOV dword ptr [ESP + 0x48],EDI
CMP EAX,0x8
JNZ 0x00163d69
MOV EBX,dword ptr [ESP + 0xcc]
MOV byte ptr [EBX],0x0
MOV EBP,dword ptr [ESP + 0x3c]
MOV EDX,0xffffffff
SUB EAX,ECX
MOV dword ptr [ESP + 0x14],0x0
MOV EDI,dword ptr [ESP + 0x38]
SHL EDX,CL
MOV ECX,ESI
NOT EDX
MOV EBX,dword ptr [ESP + 0x8]
SHRD EDI,EBP,CL
SHR EBP,CL
TEST CL,0x20
CMOVNZ EDI,EBP
MOV ECX,EAX
MOV dword ptr [EBX + 0x50],EAX
AND EDX,EDI
MOV dword ptr [ESP + 0x10],EDX
MOV EDI,dword ptr [ESP + 0x10]
XOR EDX,EDX
SHL EDI,CL
TEST AL,0x20
CMOVNZ EDI,EDX
MOV ECX,EDI
MOV EDI,dword ptr [ESP + 0xcc]
OR byte ptr [EDI],CL
TEST EAX,EAX
JNZ 0x00163d30
MOV EBX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x8]
ADD dword ptr [ESP + 0xcc],0x1
TEST EBX,EBX
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
JG 0x00163d43
MOV EBX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [ESP + 0xc8]
MOV EBP,dword ptr [ESP + 0xcc]
MOV EBX,dword ptr [EBX + 0x2a8]
MOV ESI,dword ptr [EDX]
MOV EDX,dword ptr [EBX + 0x14]
FLD qword ptr [EDI + EDX*0x8]
FUCOMI ST0,ST0
JP 0x00165018
FLDZ
MOV dword ptr [ESP + 0x38],0x0
MOV EDX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
MOV dword ptr [ESP + 0x3c],0x0
JNC 0x00163ec0
MOV ECX,dword ptr [ESP + 0x44]
FILD qword ptr [ESP + 0x40]
TEST ECX,ECX
JNS 0x00163e40
FADD dword ptr [EDX + 0xffec18b0]
FSTP qword ptr [ESP + 0x98]
FLD qword ptr [ESP + 0x98]
FMULP
MOV dword ptr [ESP + 0x38],0xffffffff
MOV dword ptr [ESP + 0x3c],0xffffffff
FDIV dword ptr [EDX + 0xffec18a8]
FLD dword ptr [EDX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00163ec8
FADD dword ptr [EDX + 0xffec12b8]
FLD dword ptr [EDX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x001645a0
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x38]
FLDCW word ptr [ESP + 0x92]
JMP 0x00163ed0
FSTP ST0
JMP 0x00163ed0
FSTP ST0
LEA ESI,[ESI]
TEST EAX,EAX
JNZ 0x00163ee4
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
TEST ESI,ESI
JLE 0x001646c0
MOV dword ptr [ESP + 0xcc],EBP
JMP 0x00163f0b
MOV EBX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EBX + 0x50]
MOV EBX,dword ptr [ESP + 0x48]
TEST EBX,EBX
JLE 0x00163fac
CMP ESI,EAX
MOV ECX,EAX
MOV EDI,ESI
CMOVBE ECX,ESI
MOV ESI,0x0
SUB EDI,ECX
CMOVNS ESI,EDI
MOV dword ptr [ESP + 0x48],EDI
CMP EAX,0x8
JNZ 0x00163f31
MOV EBX,dword ptr [ESP + 0xcc]
MOV byte ptr [EBX],0x0
MOV EBP,dword ptr [ESP + 0x3c]
MOV EDX,0xffffffff
SUB EAX,ECX
MOV dword ptr [ESP + 0x1c],0x0
MOV EDI,dword ptr [ESP + 0x38]
SHL EDX,CL
MOV ECX,ESI
NOT EDX
MOV EBX,dword ptr [ESP + 0x8]
SHRD EDI,EBP,CL
SHR EBP,CL
TEST CL,0x20
CMOVNZ EDI,EBP
MOV ECX,EAX
MOV dword ptr [EBX + 0x50],EAX
AND EDX,EDI
MOV dword ptr [ESP + 0x18],EDX
MOV EDI,dword ptr [ESP + 0x18]
XOR EDX,EDX
SHL EDI,CL
TEST AL,0x20
CMOVNZ EDI,EDX
MOV ECX,EDI
MOV EDI,dword ptr [ESP + 0xcc]
OR byte ptr [EDI],CL
TEST EAX,EAX
JNZ 0x00163ef8
MOV EBX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x8]
ADD dword ptr [ESP + 0xcc],0x1
TEST EBX,EBX
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
JG 0x00163f0b
MOV EBX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [ESP + 0xc8]
MOV EBP,dword ptr [ESP + 0xcc]
MOV EBX,dword ptr [EBX + 0x2a8]
MOV ESI,dword ptr [EDX]
MOV EDX,dword ptr [EBX + 0x8]
FLD qword ptr [EDI + EDX*0x8]
FUCOMI ST0,ST0
JP 0x00165030
FLDZ
MOV dword ptr [ESP + 0x38],0x0
MOV EDX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
MOV dword ptr [ESP + 0x3c],0x0
JNC 0x00164088
MOV ECX,dword ptr [ESP + 0x44]
FILD qword ptr [ESP + 0x40]
TEST ECX,ECX
JNS 0x00164008
FADD dword ptr [EDX + 0xffec18b0]
FSTP qword ptr [ESP + 0x98]
FLD qword ptr [ESP + 0x98]
FMULP
MOV dword ptr [ESP + 0x38],0xffffffff
MOV dword ptr [ESP + 0x3c],0xffffffff
FDIV dword ptr [EDX + 0xffec18a8]
FLD dword ptr [EDX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00164090
FADD dword ptr [EDX + 0xffec12b8]
FLD dword ptr [EDX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x00164540
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x38]
FLDCW word ptr [ESP + 0x92]
JMP 0x00164098
FSTP ST0
JMP 0x00164098
FSTP ST0
LEA ESI,[ESI]
TEST EAX,EAX
JNZ 0x001640ac
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
TEST ESI,ESI
JLE 0x0016418b
MOV dword ptr [ESP + 0xcc],EBP
JMP 0x001640d3
MOV EBX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EBX + 0x50]
MOV EBX,dword ptr [ESP + 0x48]
TEST EBX,EBX
JLE 0x00164174
CMP EAX,ESI
MOV ECX,ESI
MOV EDI,ESI
CMOVBE ECX,EAX
MOV ESI,0x0
SUB EDI,ECX
CMOVNS ESI,EDI
MOV dword ptr [ESP + 0x48],EDI
CMP EAX,0x8
JNZ 0x001640f9
MOV EBX,dword ptr [ESP + 0xcc]
MOV byte ptr [EBX],0x0
MOV EBP,dword ptr [ESP + 0x3c]
MOV EDX,0xffffffff
SUB EAX,ECX
MOV dword ptr [ESP + 0x24],0x0
MOV EDI,dword ptr [ESP + 0x38]
SHL EDX,CL
MOV ECX,ESI
NOT EDX
MOV EBX,dword ptr [ESP + 0x8]
SHRD EDI,EBP,CL
SHR EBP,CL
TEST CL,0x20
CMOVNZ EDI,EBP
MOV ECX,EAX
MOV dword ptr [EBX + 0x50],EAX
AND EDX,EDI
MOV dword ptr [ESP + 0x20],EDX
MOV EDI,dword ptr [ESP + 0x20]
XOR EDX,EDX
SHL EDI,CL
TEST AL,0x20
CMOVNZ EDI,EDX
MOV EDX,dword ptr [ESP + 0xcc]
MOV ECX,EDI
OR byte ptr [EDX],CL
TEST EAX,EAX
JNZ 0x001640c0
MOV EBX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x8]
ADD dword ptr [ESP + 0xcc],0x1
TEST EBX,EBX
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
JG 0x001640d3
MOV EBX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0xcc]
MOV EBX,dword ptr [EBX + 0x2a8]
MOV ESI,dword ptr [EDX]
MOV ECX,dword ptr [EBX + 0x34]
TEST ECX,ECX
JZ 0x001642f8
MOV EDX,dword ptr [EBX + 0x38]
MOV dword ptr [ESP + 0x38],0x0
MOV EBX,dword ptr [ESP + 0xc8]
MOV dword ptr [ESP + 0x3c],0x0
FLD qword ptr [EBX + EDX*0x8]
FUCOMI ST0,ST0
JP 0x001641c8
FLDZ
FUCOMIP ST0,ST1
JC 0x00164302
FSTP ST0
JMP 0x001641d8
FSTP ST0
JMP 0x001641d8
FSTP ST0
LEA ESI,[ESI]
TEST EAX,EAX
JNZ 0x001641ec
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
TEST ESI,ESI
JLE 0x0016428f
MOV EDI,ESI
JMP 0x00164207
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x50]
CMP EDI,EAX
MOV ECX,EAX
CMOVBE ECX,EDI
SUB EDI,ECX
MOV EDX,EDI
MOV EDI,0x0
CMOVNS EDI,EDX
CMP EAX,0x8
JNZ 0x00164223
MOV byte ptr [EBP],0x0
MOV EBX,dword ptr [ESP + 0x8]
MOV ESI,0xffffffff
SUB EAX,ECX
SHL ESI,CL
MOV ECX,EDI
NOT ESI
MOV dword ptr [ESP + 0x48],ESI
MOV ESI,dword ptr [ESP + 0x3c]
MOV dword ptr [EBX + 0x50],EAX
MOV EBX,dword ptr [ESP + 0x38]
SHRD EBX,ESI,CL
SHR ESI,CL
TEST CL,0x20
JZ 0x0016424f
MOV EBX,ESI
MOV ESI,dword ptr [ESP + 0x48]
MOV ECX,EBX
MOV dword ptr [ESP + 0x2c],0x0
AND ESI,ECX
MOV ECX,EAX
MOV dword ptr [ESP + 0x28],ESI
MOV EBX,dword ptr [ESP + 0x28]
SHL EBX,CL
TEST CL,0x20
JZ 0x00164272
XOR EBX,EBX
OR byte ptr [EBP],BL
TEST EAX,EAX
JNZ 0x00164287
MOV EBX,dword ptr [ESP + 0x8]
ADD EBP,0x1
MOV dword ptr [EBX + 0x50],0x8
TEST EDX,EDX
JG 0x00164200
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
ADD dword ptr [ESP + 0x50],0x1
MOV EAX,dword ptr [EAX + 0x298]
LEA EAX,[EBX + EAX*0x8]
MOV EBX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0xc8],EAX
MOV EAX,dword ptr [ESP + 0x50]
ADD EBP,dword ptr [EBX + 0x24]
CMP EAX,dword ptr [ESP + 0x4c]
JZ 0x00163b9a
MOV ESI,dword ptr [EBX]
JMP 0x00163c18
MOV EAX,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x44],0x0
TEST EAX,EAX
JZ 0x00163bfb
JMP 0x00163bc4
MOV EBX,dword ptr [ESP + 0x30]
FLD dword ptr [EBX + 0xffec18a8]
MOV EDX,dword ptr [ESP + 0x44]
FILD qword ptr [ESP + 0x40]
TEST EDX,EDX
JNS 0x00164318
MOV EBX,dword ptr [ESP + 0x30]
FADD dword ptr [EBX + 0xffec18b0]
MOV EBX,dword ptr [ESP + 0x30]
FSTP qword ptr [ESP + 0x98]
FLD qword ptr [ESP + 0x98]
MOV dword ptr [ESP + 0x38],0xffffffff
FMULP
MOV dword ptr [ESP + 0x3c],0xffffffff
FDIV dword ptr [EBX + 0xffec18a8]
FLD dword ptr [EBX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001641d0
FADD dword ptr [EBX + 0xffec12b8]
FLD dword ptr [EBX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x00164660
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x38]
FLDCW word ptr [ESP + 0x92]
JMP 0x001641d8
FUCOMI ST0,ST0
JP 0x00163b2c
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00163b30
FMUL dword ptr [EAX + 0xffee77bc]
FDIV dword ptr [EAX + 0xffec18a8]
FLD dword ptr [EAX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x0016518d
FADD dword ptr [EAX + 0xffec12b8]
FLD dword ptr [EAX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x00165110
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
SHL EAX,0x16
OR EBX,EAX
JMP 0x00163b48
FUCOMI ST0,ST0
JP 0x00163b34
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00163b40
FMUL dword ptr [EAX + 0xffee77bc]
FDIV dword ptr [EAX + 0xffec18a8]
FLD dword ptr [EAX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001651a4
FADD dword ptr [EAX + 0xffec12b8]
FLD dword ptr [EAX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x001650d0
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
SHL EAX,0xc
OR EBX,EAX
JMP 0x00163b48
MOV EAX,dword ptr [EAX + 0x14]
JMP 0x001639ed
MOV EDX,dword ptr [EAX + 0x34]
TEST EDX,EDX
JZ 0x00164720
MOV EAX,dword ptr [EAX + 0x38]
MOV EDX,dword ptr [ESP + 0xc8]
FLD qword ptr [EDX + EAX*0x8]
MOV dword ptr [ESP + 0xc],0x0
FNSTCW word ptr [ESP + 0x92]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x8],EAX
FILD qword ptr [ESP + 0x8]
JMP 0x00163a3d
MOV EAX,dword ptr [EAX + 0x20]
JMP 0x001644de
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EDX,dword ptr [ESP + 0x88]
MOV ECX,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0x3c],ECX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x38],ECX
ADD EDX,0x80000000
MOV dword ptr [ESP + 0x3c],EDX
JMP 0x00164098
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EDX,dword ptr [ESP + 0x88]
MOV ECX,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0x3c],ECX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x38],ECX
ADD EDX,0x80000000
MOV dword ptr [ESP + 0x3c],EDX
JMP 0x00163ed0
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
MOV EDX,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0x3c],EDX
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x38],EDX
ADD EAX,0x80000000
MOV dword ptr [ESP + 0x3c],EAX
JMP 0x00163d00
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EDX,dword ptr [ESP + 0x88]
MOV ECX,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0x3c],ECX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x38],ECX
ADD EDX,0x80000000
MOV dword ptr [ESP + 0x3c],EDX
JMP 0x001641d8
MOV EDX,dword ptr [EBX + 0x8]
MOV EDI,dword ptr [ESP + 0xc8]
FLD qword ptr [EDI + EDX*0x8]
FUCOMI ST0,ST0
JNP 0x00163fd8
FSTP ST0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x3c],0x0
JMP 0x001640ac
MOV EDX,dword ptr [EBX + 0x14]
MOV EDI,dword ptr [ESP + 0xc8]
FLD qword ptr [EDI + EDX*0x8]
FUCOMI ST0,ST0
JNP 0x00163e10
FSTP ST0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x3c],0x0
JMP 0x00163ee4
MOV EAX,dword ptr [ESP + 0x30]
FLD dword ptr [EAX + 0xffec18a8]
JMP 0x00163a3d
MOV EAX,dword ptr [ESP + 0x4c]
TEST EAX,EAX
JLE 0x00163b9a
XOR EDX,EDX
MOV ECX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0xc8]
JMP 0x0016477a
FSTP ST0
JMP 0x0016475a
FSTP ST0
MOV byte ptr [ESI + 0x3],BL
MOV EBX,dword ptr [ECX + 0x298]
ADD EDX,0x1
LEA EAX,[EAX + EBX*0x8]
MOV EBX,dword ptr [EBP + 0x24]
LEA ESI,[ESI + EBX*0x1 + 0x4]
CMP EDX,dword ptr [ESP + 0x4c]
JZ 0x00163b9a
MOV EBX,dword ptr [ECX + 0x2a8]
MOV EBX,dword ptr [EBX + 0x20]
FLD qword ptr [EAX + EBX*0x8]
XOR EBX,EBX
FUCOMI ST0,ST0
JP 0x001647f0
FLDZ
MOV EDI,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x001647f8
FDIV dword ptr [EDI + 0xffeca14c]
MOV EBX,0xffffffff
FLD dword ptr [EDI + 0xffeca150]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00164800
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EDI + 0xffec12b8]
MOVZX EBX,word ptr [ESP + 0x92]
OR BH,0xc
MOV word ptr [ESP + 0x90],BX
FLDCW word ptr [ESP + 0x90]
FISTP word ptr [ESP + 0x82]
FLDCW word ptr [ESP + 0x92]
MOVZX EBX,word ptr [ESP + 0x82]
JMP 0x00164808
FSTP ST0
JMP 0x00164808
FSTP ST0
JMP 0x00164808
FSTP ST0
LEA ESI,[ESI]
MOV byte ptr [ESI],BL
MOV EBX,dword ptr [ECX + 0x2a8]
MOV EBX,dword ptr [EBX + 0x14]
FLD qword ptr [EAX + EBX*0x8]
XOR EBX,EBX
FUCOMI ST0,ST0
JP 0x00164880
FLDZ
MOV EDI,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164888
FDIV dword ptr [EDI + 0xffeca14c]
MOV EBX,0xffffffff
FLD dword ptr [EDI + 0xffeca150]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00164890
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EDI + 0xffec12b8]
MOVZX EBX,word ptr [ESP + 0x92]
OR BH,0xc
MOV word ptr [ESP + 0x90],BX
FLDCW word ptr [ESP + 0x90]
FISTP word ptr [ESP + 0x82]
FLDCW word ptr [ESP + 0x92]
MOVZX EBX,word ptr [ESP + 0x82]
JMP 0x00164898
FSTP ST0
JMP 0x00164898
FSTP ST0
JMP 0x00164898
FSTP ST0
LEA ESI,[ESI]
MOV byte ptr [ESI + 0x1],BL
MOV EBX,dword ptr [ECX + 0x2a8]
MOV EBX,dword ptr [EBX + 0x8]
FLD qword ptr [EAX + EBX*0x8]
XOR EBX,EBX
FUCOMI ST0,ST0
JP 0x00164910
FLDZ
MOV EDI,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164918
FDIV dword ptr [EDI + 0xffeca14c]
MOV EBX,0xffffffff
FLD dword ptr [EDI + 0xffeca150]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00164920
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EDI + 0xffec12b8]
MOVZX EBX,word ptr [ESP + 0x92]
OR BH,0xc
MOV word ptr [ESP + 0x90],BX
FLDCW word ptr [ESP + 0x90]
FISTP word ptr [ESP + 0x82]
FLDCW word ptr [ESP + 0x92]
MOVZX EBX,word ptr [ESP + 0x82]
JMP 0x00164928
FSTP ST0
JMP 0x00164928
FSTP ST0
JMP 0x00164928
FSTP ST0
LEA ESI,[ESI]
MOV byte ptr [ESI + 0x2],BL
MOV EDI,dword ptr [ECX + 0x2a8]
MOV EBX,0xffffffff
CMP dword ptr [EDI + 0x34],0x0
JZ 0x0016475a
MOV EBX,dword ptr [EDI + 0x38]
FLD qword ptr [EAX + EBX*0x8]
XOR EBX,EBX
FUCOMI ST0,ST0
JP 0x00164750
FLDZ
MOV EDI,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164758
FDIV dword ptr [EDI + 0xffeca14c]
FLD dword ptr [EDI + 0xffeca150]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00166a08
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EDI + 0xffec12b8]
MOVZX EBX,word ptr [ESP + 0x92]
OR BH,0xc
MOV word ptr [ESP + 0x90],BX
FLDCW word ptr [ESP + 0x90]
FISTP word ptr [ESP + 0x82]
FLDCW word ptr [ESP + 0x92]
MOVZX EBX,word ptr [ESP + 0x82]
JMP 0x0016475a
CMP dword ptr [EDX + 0x8],0x1
JZ 0x00165977
MOV EAX,dword ptr [ESP + 0x4c]
XOR EDI,EDI
TEST EAX,EAX
JLE 0x00163b9a
FLD qword ptr [EBX + 0xffeca160]
MOV dword ptr [ESP + 0x8],EDI
JMP 0x00164a63
MOV EAX,dword ptr [EAX + 0x38]
MOV ESI,dword ptr [ESP + 0xc8]
FLD qword ptr [ESI + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00164a0b
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JC 0x0016613a
FSTP ST0
JMP 0x00164a0d
FSTP ST0
XOR EAX,EAX
XOR ESI,ESI
XOR EDX,EDX
XOR EDI,EDI
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00164c8e
MOV ECX,EDI
MOV byte ptr [EBX + 0x1],DL
MOV EDX,ESI
MOV byte ptr [EBX],CL
MOV byte ptr [EBX + 0x2],DL
MOV byte ptr [EBX + 0x3],AL
MOV EAX,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0xc8]
ADD dword ptr [ESP + 0x8],0x1
MOV EAX,dword ptr [EAX + 0x298]
LEA EAX,[ESI + EAX*0x8]
MOV dword ptr [ESP + 0xc8],EAX
MOV EAX,dword ptr [EBP + 0x24]
LEA ESI,[EBX + EAX*0x1 + 0x4]
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,dword ptr [ESP + 0x4c]
JZ 0x00163b88
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x20]
FLD qword ptr [EBX + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00164cfa
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164d00
FMUL dword ptr [EAX + 0xffeca148]
FUCOMI ST0,ST1
JNC 0x00165050
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EAX + 0xffec12b8]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
MOV EBX,EAX
MOV EDX,EAX
SHR EBX,0x18
SHR EDX,0x10
MOV EDI,EBX
MOVZX EBX,AH
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00164d14
MOV ECX,EDI
MOV byte ptr [ESI + 0x1],DL
MOV byte ptr [ESI],CL
MOV byte ptr [ESI + 0x2],BL
MOV byte ptr [ESI + 0x3],AL
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x14]
FLD qword ptr [EBX + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00164cca
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164cd0
FMUL dword ptr [EAX + 0xffeca148]
FLD qword ptr [EAX + 0xffeca160]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00165090
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EAX + 0xffec12b8]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
MOV EBX,EAX
MOV EDX,EAX
MOVZX EDI,AH
SHR EBX,0x18
SHR EDX,0x10
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00164ce4
MOV byte ptr [ESI + 0x4],BL
MOV EBX,EDI
MOV byte ptr [ESI + 0x5],DL
LEA EDI,[ESI + 0x8]
MOV byte ptr [ESI + 0x6],BL
MOV byte ptr [ESI + 0x7],AL
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x8]
FLD qword ptr [EBX + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00164c9f
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164ca8
FMUL dword ptr [EAX + 0xffeca148]
FLD qword ptr [EAX + 0xffeca160]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00165070
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EAX + 0xffec12b8]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
MOV EBX,EAX
MOV EDX,EAX
SHR EBX,0x18
SHR EDX,0x10
MOV ESI,EBX
MOVZX EBX,AH
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00164cb8
MOV ECX,ESI
MOV byte ptr [EDI + 0x2],BL
MOV byte ptr [EDI],CL
LEA EBX,[EDI + 0x4]
MOV byte ptr [EDI + 0x1],DL
MOV byte ptr [EDI + 0x3],AL
MOV EAX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + 0x2a8]
MOV ESI,dword ptr [EAX + 0x34]
TEST ESI,ESI
JNZ 0x001649e8
JMP 0x00164c70
FSTP ST0
NOP
LEA ESI,[ESI]
CMP dword ptr [EBP + 0x40],0x1
MOV EAX,0xffffffff
MOV ESI,0xffffffff
MOV EDX,0xffffffff
MOV EDI,0xffffffff
JNZ 0x00164a1f
MOV byte ptr [EBX],AL
MOV EAX,ESI
MOV byte ptr [EBX + 0x1],AL
MOV EAX,EDI
MOV byte ptr [EBX + 0x2],DL
JMP 0x00164a2b
FSTP ST0
JMP 0x00164caa
FSTP ST0
XOR EAX,EAX
XOR EBX,EBX
XOR EDX,EDX
XOR ESI,ESI
CMP dword ptr [EBP + 0x40],0x1
JNZ 0x00164c3f
MOV byte ptr [EDI],AL
MOV EAX,ESI
MOV byte ptr [EDI + 0x1],BL
LEA EBX,[EDI + 0x4]
MOV byte ptr [EDI + 0x2],DL
MOV byte ptr [EDI + 0x3],AL
JMP 0x00164c4f
FSTP ST0
JMP 0x00164cd2
FSTP ST0
XOR EAX,EAX
XOR EDI,EDI
XOR EDX,EDX
XOR EBX,EBX
CMP dword ptr [EBP + 0x40],0x1
JNZ 0x00164b98
MOV byte ptr [ESI + 0x4],AL
MOV EAX,EDI
MOV byte ptr [ESI + 0x5],AL
LEA EDI,[ESI + 0x8]
MOV byte ptr [ESI + 0x6],DL
MOV byte ptr [ESI + 0x7],BL
JMP 0x00164ba9
FSTP ST0
JMP 0x00164d02
FSTP ST0
XOR EAX,EAX
XOR EBX,EBX
XOR EDX,EDX
XOR EDI,EDI
CMP dword ptr [EBP + 0x40],0x1
JNZ 0x00164af3
MOV byte ptr [ESI],AL
MOV EAX,EDI
MOV byte ptr [ESI + 0x1],BL
MOV byte ptr [ESI + 0x2],DL
MOV byte ptr [ESI + 0x3],AL
JMP 0x00164b00
CMP dword ptr [EDX + 0x8],0x1
JZ 0x001657cb
MOV EAX,dword ptr [ESP + 0x4c]
XOR EDI,EDI
TEST EAX,EAX
JLE 0x00163b9a
MOV dword ptr [ESP + 0x8],EDI
MOV EDX,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [ESP + 0xc8]
JMP 0x00164dcb
MOV EAX,dword ptr [EAX + 0x38]
FLD qword ptr [EDI + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00164d7c
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JC 0x001660e0
FSTP ST0
JMP 0x00164d7e
FSTP ST0
XOR EBX,EBX
MOV byte ptr [ESP + 0x10],0x0
CMP dword ptr [EBP + 0x40],0x1
LEA EAX,[ESI + 0x2]
MOV dword ptr [ESP + 0x18],EAX
JNZ 0x00164d9d
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ESP + 0x10],BL
MOV EBX,EAX
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ESI + 0x1],BL
ADD dword ptr [ESP + 0x8],0x1
MOV ESI,dword ptr [ESP + 0x18]
MOV byte ptr [ECX + 0x2],AL
MOV ECX,dword ptr [EDX + 0x298]
ADD ESI,dword ptr [EBP + 0x24]
MOV EAX,dword ptr [ESP + 0x8]
LEA EDI,[EDI + ECX*0x8]
CMP EAX,dword ptr [ESP + 0x4c]
JZ 0x00163b9a
MOV EAX,dword ptr [EDX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x20]
FLD qword ptr [EDI + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00164fb3
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164fc0
FLD dword ptr [EAX + 0xffec18a8]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00165000
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EAX + 0xffec12b8]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP dword ptr [ESP + 0x84]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x84]
MOVZX ECX,AH
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00164e4a
MOV EBX,EAX
MOV EAX,ECX
MOV ECX,EBX
MOV byte ptr [ESI + 0x1],CL
MOV byte ptr [ESI],AL
MOV EAX,dword ptr [EDX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x14]
FLD qword ptr [EDI + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00164fa0
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164fa8
FLD dword ptr [EAX + 0xffec18a8]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00164fe8
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EAX + 0xffec12b8]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP dword ptr [ESP + 0x84]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x84]
MOVZX EBX,AH
CMP dword ptr [EBP + 0x40],0x1
LEA ECX,[ESI + 0x4]
JNZ 0x00164ed6
MOV byte ptr [ESP + 0x10],BL
MOV EBX,EAX
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ESI + 0x3],AL
MOV byte ptr [ESI + 0x2],BL
MOV EAX,dword ptr [EDX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x8]
FLD qword ptr [EDI + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00164f8f
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00164f98
FLD dword ptr [EAX + 0xffec18a8]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00164fd0
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EAX + 0xffec12b8]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP dword ptr [ESP + 0x84]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x84]
MOVZX EBX,AH
CMP dword ptr [EBP + 0x40],0x1
LEA ESI,[ECX + 0x2]
JNZ 0x00164f63
MOV byte ptr [ESP + 0x10],BL
MOV EBX,EAX
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ECX + 0x1],AL
MOV byte ptr [ECX],BL
MOV EAX,dword ptr [EDX + 0x2a8]
MOV EBX,dword ptr [EAX + 0x34]
TEST EBX,EBX
JNZ 0x00164d60
JMP 0x00164f80
FSTP ST0
LEA ESI,[ESI]
MOV EBX,0xffffffff
MOV byte ptr [ESP + 0x10],0xff
JMP 0x00164d85
FSTP ST0
JMP 0x00164f9a
FSTP ST0
XOR EAX,EAX
XOR EBX,EBX
JMP 0x00164f4f
FSTP ST0
JMP 0x00164faa
FSTP ST0
XOR EAX,EAX
XOR EBX,EBX
JMP 0x00164ec2
FSTP ST0
JMP 0x00164fc2
FSTP ST0
XOR EAX,EAX
XOR ECX,ECX
JMP 0x00164e3e
FSTP ST0
MOV EAX,0xffffffff
MOV EBX,0xffffffff
JMP 0x00164f4f
FSTP ST0
MOV EAX,0xffffffff
MOV EBX,0xffffffff
JMP 0x00164ec2
FSTP ST0
MOV EAX,0xffffffff
MOV ECX,0xffffffff
JMP 0x00164e3e
FSTP ST0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x3c],0x0
JMP 0x00163ed0
FSTP ST0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x3c],0x0
JMP 0x00164098
FSTP ST0
MOV EAX,0xffffffff
MOV EBX,0xffffffff
MOV EDX,0xffffffff
MOV EDI,0xffffffff
JMP 0x00164ae9
FSTP ST0
MOV EAX,0xffffffff
MOV EBX,0xffffffff
MOV EDX,0xffffffff
MOV ESI,0xffffffff
JMP 0x00164c39
FSTP ST0
MOV EAX,0xffffffff
MOV EDI,0xffffffff
MOV EDX,0xffffffff
MOV EBX,0xffffffff
JMP 0x00164b8e
MOV EAX,EDI
MOV byte ptr [ESI],BL
XOR EBX,EBX
MOV byte ptr [ESI + 0x2],AL
MOVZX EAX,byte ptr [ESP + 0x18]
MOV byte ptr [ESI + 0x1],DL
MOV byte ptr [ESI + 0x3],AL
MOV ESI,dword ptr [ESP + 0x8]
JMP 0x00163b48
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
JMP 0x001644b2
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
JMP 0x00164422
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
JMP 0x00163ad7
FSTP ST0
OR EBX,0xffc00000
JMP 0x00163b48
FSTP ST0
OR EBX,0xfffffffc
JMP 0x00163aea
FSTP ST0
OR EBX,0xfffff000
JMP 0x00163b48
CMP dword ptr [EDX + 0x4],0x20
JZ 0x001661fa
MOV EDI,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x18],0x0
TEST EDI,EDI
JLE 0x00163b9a
MOV EBP,ESI
MOV ESI,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x8],EDX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EDI,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EDI + 0x8]
FLD qword ptr [EBX + EAX*0x8]
FUCOMI ST0,ST0
JP 0x00165e25
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00165e30
FMUL dword ptr [EAX + 0xffee77bc]
FDIV dword ptr [EAX + 0xffec18a8]
FLD dword ptr [EAX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001660af
FADD dword ptr [EAX + 0xffec12b8]
FLD dword ptr [EAX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x0016605b
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x70],EAX
MOV dword ptr [ESP + 0x74],0x0
MOV EBX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EBX + 0x50]
TEST EAX,EAX
JNZ 0x0016529c
MOV dword ptr [EBX + 0x50],0x8
MOV EAX,0x8
TEST ESI,ESI
JLE 0x001661ce
MOV dword ptr [ESP + 0xcc],EBP
JMP 0x001652c3
MOV ECX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x8]
TEST ECX,ECX
MOV EAX,dword ptr [EBX + 0x50]
JLE 0x00165364
CMP ESI,EAX
MOV ECX,EAX
MOV EDI,ESI
CMOVBE ECX,ESI
MOV ESI,0x0
SUB EDI,ECX
CMOVNS ESI,EDI
MOV dword ptr [ESP + 0x10],EDI
CMP EAX,0x8
JNZ 0x001652e9
MOV EDX,dword ptr [ESP + 0xcc]
MOV byte ptr [EDX],0x0
MOV EBP,dword ptr [ESP + 0x74]
MOV EDX,0xffffffff
SUB EAX,ECX
MOV dword ptr [ESP + 0x3c],0x0
MOV EDI,dword ptr [ESP + 0x70]
SHL EDX,CL
MOV ECX,ESI
NOT EDX
MOV EBX,dword ptr [ESP + 0x8]
SHRD EDI,EBP,CL
SHR EBP,CL
TEST CL,0x20
CMOVNZ EDI,EBP
MOV ECX,EAX
MOV dword ptr [EBX + 0x50],EAX
AND EDX,EDI
MOV dword ptr [ESP + 0x38],EDX
MOV EDI,dword ptr [ESP + 0x38]
XOR EDX,EDX
SHL EDI,CL
TEST AL,0x20
CMOVNZ EDI,EDX
MOV EDX,dword ptr [ESP + 0xcc]
MOV ECX,EDI
OR byte ptr [EDX],CL
TEST EAX,EAX
JNZ 0x001652b0
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x8]
ADD dword ptr [ESP + 0xcc],0x1
TEST ECX,ECX
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
JG 0x001652c3
MOV EBX,dword ptr [ESP + 0x34]
MOV EBP,dword ptr [ESP + 0xcc]
MOV EDI,dword ptr [EBX + 0x2a8]
MOV EBX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [EDI + 0x14]
MOV ESI,dword ptr [EBX]
MOV EBX,dword ptr [ESP + 0xc8]
FLD qword ptr [EBX + EDX*0x8]
FUCOMI ST0,ST0
JP 0x00165e67
FLDZ
MOV EBX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00165e70
FMUL dword ptr [EBX + 0xffee77bc]
FDIV dword ptr [EBX + 0xffec18a8]
FLD dword ptr [EBX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00166098
FADD dword ptr [EBX + 0xffec12b8]
FLD dword ptr [EBX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x00165fe1
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ECX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x68],ECX
MOV dword ptr [ESP + 0x6c],0x0
TEST EAX,EAX
JNZ 0x0016542a
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
TEST ESI,ESI
JLE 0x001661a2
MOV dword ptr [ESP + 0xcc],EBP
JMP 0x00165453
MOV ECX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x8]
TEST ECX,ECX
MOV EAX,dword ptr [EBX + 0x50]
JLE 0x001654f4
CMP ESI,EAX
MOV ECX,EAX
MOV EDI,ESI
CMOVBE ECX,ESI
MOV ESI,0x0
SUB EDI,ECX
CMOVNS ESI,EDI
MOV dword ptr [ESP + 0x10],EDI
CMP EAX,0x8
JNZ 0x00165479
MOV EDI,dword ptr [ESP + 0xcc]
MOV byte ptr [EDI],0x0
MOV EBP,dword ptr [ESP + 0x6c]
MOV EDX,0xffffffff
SUB EAX,ECX
MOV dword ptr [ESP + 0x44],0x0
MOV EDI,dword ptr [ESP + 0x68]
SHL EDX,CL
MOV ECX,ESI
NOT EDX
MOV EBX,dword ptr [ESP + 0x8]
SHRD EDI,EBP,CL
SHR EBP,CL
TEST CL,0x20
CMOVNZ EDI,EBP
MOV ECX,EAX
MOV dword ptr [EBX + 0x50],EAX
AND EDX,EDI
MOV dword ptr [ESP + 0x40],EDX
MOV EDI,dword ptr [ESP + 0x40]
XOR EDX,EDX
SHL EDI,CL
TEST AL,0x20
CMOVNZ EDI,EDX
MOV ECX,EDI
MOV EDI,dword ptr [ESP + 0xcc]
OR byte ptr [EDI],CL
TEST EAX,EAX
JNZ 0x00165440
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x8]
ADD dword ptr [ESP + 0xcc],0x1
TEST ECX,ECX
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
JG 0x00165453
MOV EBX,dword ptr [ESP + 0x34]
MOV EBP,dword ptr [ESP + 0xcc]
MOV EDI,dword ptr [EBX + 0x2a8]
MOV EBX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [EDI + 0x20]
MOV ESI,dword ptr [EBX]
MOV EBX,dword ptr [ESP + 0xc8]
FLD qword ptr [EBX + EDX*0x8]
FUCOMI ST0,ST0
JP 0x00165e47
FLDZ
MOV EBX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00165e50
FMUL dword ptr [EBX + 0xffee77bc]
FDIV dword ptr [EBX + 0xffec18a8]
FLD dword ptr [EBX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001660c6
FADD dword ptr [EBX + 0xffec12b8]
FLD dword ptr [EBX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x0016601e
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ECX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x60],ECX
MOV dword ptr [ESP + 0x64],0x0
TEST EAX,EAX
JNZ 0x001655ba
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
TEST ESI,ESI
JLE 0x0016569b
MOV dword ptr [ESP + 0xcc],EBP
JMP 0x001655e3
MOV ECX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x8]
TEST ECX,ECX
MOV EAX,dword ptr [EBX + 0x50]
JLE 0x00165684
CMP ESI,EAX
MOV ECX,EAX
MOV EDI,ESI
CMOVBE ECX,ESI
MOV ESI,0x0
SUB EDI,ECX
CMOVNS ESI,EDI
MOV dword ptr [ESP + 0x10],EDI
CMP EAX,0x8
JNZ 0x00165609
MOV EDI,dword ptr [ESP + 0xcc]
MOV byte ptr [EDI],0x0
MOV EBP,dword ptr [ESP + 0x64]
MOV EDX,0xffffffff
SUB EAX,ECX
MOV dword ptr [ESP + 0x54],0x0
MOV EDI,dword ptr [ESP + 0x60]
SHL EDX,CL
MOV ECX,ESI
NOT EDX
MOV EBX,dword ptr [ESP + 0x8]
SHRD EDI,EBP,CL
SHR EBP,CL
TEST CL,0x20
CMOVNZ EDI,EBP
MOV ECX,EAX
MOV dword ptr [EBX + 0x50],EAX
AND EDX,EDI
MOV dword ptr [ESP + 0x50],EDX
MOV EDI,dword ptr [ESP + 0x50]
XOR EDX,EDX
SHL EDI,CL
TEST AL,0x20
CMOVNZ EDI,EDX
MOV ECX,EDI
MOV EDI,dword ptr [ESP + 0xcc]
OR byte ptr [EDI],CL
TEST EAX,EAX
JNZ 0x001655d0
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x8]
ADD dword ptr [ESP + 0xcc],0x1
TEST ECX,ECX
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
JG 0x001655e3
MOV EBX,dword ptr [ESP + 0x34]
MOV EBP,dword ptr [ESP + 0xcc]
MOV EDI,dword ptr [EBX + 0x2a8]
MOV EBX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [EBX]
MOV EDX,dword ptr [EDI + 0x34]
TEST EDX,EDX
JZ 0x00165e10
MOV EDX,dword ptr [EDI + 0x38]
MOV EBX,dword ptr [ESP + 0xc8]
FLD qword ptr [EBX + EDX*0x8]
FUCOMI ST0,ST0
JP 0x001656c9
FLDZ
MOV EBX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JC 0x00166905
FSTP ST0
JMP 0x001656cb
FSTP ST0
MOV dword ptr [ESP + 0x78],0x0
MOV dword ptr [ESP + 0x7c],0x0
TEST EAX,EAX
JNZ 0x001656ef
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x50],0x8
MOV EAX,0x8
TEST ESI,ESI
JLE 0x0016578f
MOV EDI,ESI
JMP 0x00165707
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x50]
CMP EDI,EAX
MOV ECX,EAX
MOV EDX,EDI
CMOVBE ECX,EDI
MOV EDI,0x0
SUB EDX,ECX
CMOVNS EDI,EDX
CMP EAX,0x8
JNZ 0x00165723
MOV byte ptr [EBP],0x0
MOV EBX,dword ptr [ESP + 0x8]
MOV ESI,0xffffffff
SUB EAX,ECX
SHL ESI,CL
MOV ECX,EDI
NOT ESI
MOV dword ptr [ESP + 0x10],ESI
MOV ESI,dword ptr [ESP + 0x7c]
MOV dword ptr [EBX + 0x50],EAX
MOV EBX,dword ptr [ESP + 0x78]
SHRD EBX,ESI,CL
SHR ESI,CL
TEST CL,0x20
JZ 0x0016574f
MOV EBX,ESI
MOV ESI,dword ptr [ESP + 0x10]
MOV ECX,EBX
MOV dword ptr [ESP + 0x5c],0x0
AND ESI,ECX
MOV ECX,EAX
MOV dword ptr [ESP + 0x58],ESI
MOV EBX,dword ptr [ESP + 0x58]
SHL EBX,CL
TEST CL,0x20
JZ 0x00165772
XOR EBX,EBX
OR byte ptr [EBP],BL
TEST EAX,EAX
JNZ 0x00165787
MOV EBX,dword ptr [ESP + 0x8]
ADD EBP,0x1
MOV dword ptr [EBX + 0x50],0x8
TEST EDX,EDX
JG 0x00165700
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
ADD dword ptr [ESP + 0x18],0x1
MOV EAX,dword ptr [EAX + 0x298]
LEA EAX,[EBX + EAX*0x8]
MOV EBX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0xc8],EAX
MOV EAX,dword ptr [ESP + 0x18]
ADD EBP,dword ptr [EBX + 0x24]
CMP EAX,dword ptr [ESP + 0x4c]
JZ 0x00163b9a
MOV ESI,dword ptr [EBX]
JMP 0x001651e0
MOV EDI,dword ptr [ESP + 0x4c]
TEST EDI,EDI
JLE 0x00163b9a
FLD qword ptr [EBX + 0xffec12e0]
MOV dword ptr [ESP + 0x8],0x0
FSTP qword ptr [ESP + 0x18]
JMP 0x00165873
MOV EAX,dword ptr [EAX + 0x38]
MOV EDX,dword ptr [ESP + 0x30]
MOV EBX,dword ptr [ESP + 0xc8]
FLD qword ptr [EDX + 0xffec12e0]
FMUL qword ptr [EBX + EAX*0x8]
FSTP dword ptr [ESP + 0x94]
FLD dword ptr [ESP + 0x94]
SUB ESP,0x10
FSTP dword ptr [ESP]
CALL 0x001533f0
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0x10]
MOVZX EDI,AH
MOV ECX,EAX
MOV EDX,EDI
MOV ESI,EBX
ADD ESI,0x2
CMP dword ptr [EBP + 0x40],0x1
CMOVZ EDX,EAX
MOV EAX,dword ptr [ESP + 0x34]
CMOVZ ECX,EDI
ADD dword ptr [ESP + 0x8],0x1
MOV byte ptr [EBX],DL
MOV byte ptr [EBX + 0x1],CL
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x298]
ADD ESI,dword ptr [EBP + 0x24]
LEA EAX,[EBX + EAX*0x8]
MOV dword ptr [ESP + 0xc8],EAX
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,dword ptr [ESP + 0x4c]
JZ 0x00163b9a
SUB ESP,0x10
MOV EBX,dword ptr [ESP + 0x44]
MOV EDI,dword ptr [ESP + 0xd8]
FLD qword ptr [ESP + 0x28]
MOV EAX,dword ptr [EBX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x20]
FMUL qword ptr [EDI + EAX*0x8]
FSTP dword ptr [ESP + 0xa4]
FLD dword ptr [ESP + 0xa4]
FSTP dword ptr [ESP]
CALL 0x001533f0
CMP dword ptr [EBP + 0x40],0x1
MOVZX EDX,AH
MOV ECX,EAX
MOV EDI,dword ptr [ESP + 0xd8]
CMOVNZ ECX,EDX
CMOVZ EAX,EDX
MOV EDX,dword ptr [ESP + 0x40]
MOV byte ptr [ESI],CL
MOV byte ptr [ESI + 0x1],AL
MOV EAX,dword ptr [EBX + 0x2a8]
FLD qword ptr [EDX + 0xffec12e0]
FST qword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0x14]
FLD qword ptr [EDI + EAX*0x8]
FMULP
FSTP dword ptr [ESP + 0xa4]
FLD dword ptr [ESP + 0xa4]
FSTP dword ptr [ESP]
CALL 0x001533f0
CMP dword ptr [EBP + 0x40],0x1
MOV dword ptr [ESP + 0x44],EBX
MOVZX EDX,AH
MOV ECX,EAX
MOV EDI,dword ptr [ESP + 0xd8]
FLD qword ptr [ESP + 0x20]
CMOVNZ ECX,EDX
CMOVZ EAX,EDX
MOV byte ptr [ESI + 0x2],CL
MOV byte ptr [ESI + 0x3],AL
MOV EAX,dword ptr [EBX + 0x2a8]
LEA EBX,[ESI + 0x6]
MOV EAX,dword ptr [EAX + 0x8]
FMUL qword ptr [EDI + EAX*0x8]
FSTP dword ptr [ESP + 0xa4]
FLD dword ptr [ESP + 0xa4]
FSTP dword ptr [ESP]
CALL 0x001533f0
ADD ESP,0x10
CMP dword ptr [EBP + 0x40],0x1
MOVZX EDI,AH
MOV dword ptr [ESP + 0x10],EBX
MOV EBX,dword ptr [ESP + 0x34]
MOV ECX,EAX
MOV EDX,EDI
CMOVZ EDX,EAX
CMOVZ ECX,EDI
MOV byte ptr [ESI + 0x4],DL
MOV byte ptr [ESI + 0x5],CL
MOV EAX,dword ptr [EBX + 0x2a8]
MOV ESI,dword ptr [EAX + 0x34]
TEST ESI,ESI
JNZ 0x001657f0
FLD1
JMP 0x00165815
MOV EAX,dword ptr [ESP + 0x4c]
XOR EDI,EDI
FLD dword ptr [EBX + 0xffec18a8]
TEST EAX,EAX
JLE 0x00163b8c
MOV dword ptr [ESP + 0x8],EDI
JMP 0x00165a22
MOV EAX,dword ptr [EAX + 0x38]
MOV EBX,dword ptr [ESP + 0xc8]
FLD qword ptr [EBX + EAX*0x8]
FSTP dword ptr [ESP + 0x94]
FLD dword ptr [ESP + 0x94]
FMUL qword ptr [EBP + 0x44]
FADD qword ptr [EBP + 0xc]
FSTP dword ptr [ESP + 0x94]
MOV EAX,dword ptr [ESP + 0x94]
MOV EDI,EAX
MOV ESI,EAX
MOVZX EBX,AH
SHR EDI,0x18
SHR ESI,0x10
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00165fd0
MOV EDX,EDI
MOV byte ptr [ECX + 0x2],BL
MOV byte ptr [ECX],DL
MOV EDX,ESI
MOV byte ptr [ECX + 0x1],DL
MOV byte ptr [ECX + 0x3],AL
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
ADD dword ptr [ESP + 0x8],0x1
MOV EAX,dword ptr [EAX + 0x298]
LEA EAX,[EBX + EAX*0x8]
MOV dword ptr [ESP + 0xc8],EAX
MOV EAX,dword ptr [EBP + 0x24]
LEA ESI,[ECX + EAX*0x1 + 0x4]
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,dword ptr [ESP + 0x4c]
JZ 0x00163b90
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x8]
FLD qword ptr [EBX + EAX*0x8]
FSTP dword ptr [ESP + 0x94]
FLD dword ptr [ESP + 0x94]
FMUL qword ptr [EBP + 0x44]
FADD qword ptr [EBP + 0xc]
FSTP dword ptr [ESP + 0x94]
MOV EAX,dword ptr [ESP + 0x94]
MOV EDI,EAX
MOV EBX,EAX
MOVZX ECX,AH
SHR EDI,0x18
SHR EBX,0x10
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00165f80
MOV EDX,EDI
MOV byte ptr [ESI + 0x1],BL
MOV byte ptr [ESI],DL
MOV byte ptr [ESI + 0x2],CL
MOV byte ptr [ESI + 0x3],AL
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x14]
FLD qword ptr [EBX + EAX*0x8]
FSTP dword ptr [ESP + 0x94]
FLD dword ptr [ESP + 0x94]
FMUL qword ptr [EBP + 0x44]
FADD qword ptr [EBP + 0xc]
FSTP dword ptr [ESP + 0x94]
MOV EAX,dword ptr [ESP + 0x94]
MOV EDI,EAX
MOV EBX,EAX
MOVZX ECX,AH
SHR EDI,0x18
SHR EBX,0x10
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00165f68
MOV EDX,EDI
MOV byte ptr [ESI + 0x5],BL
MOV byte ptr [ESI + 0x4],DL
LEA EBX,[ESI + 0x8]
MOV byte ptr [ESI + 0x6],CL
MOV byte ptr [ESI + 0x7],AL
MOV EAX,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EAX + 0x20]
FLD qword ptr [ESI + EAX*0x8]
FSTP dword ptr [ESP + 0x94]
FLD dword ptr [ESP + 0x94]
FMUL qword ptr [EBP + 0x44]
FADD qword ptr [EBP + 0xc]
FSTP dword ptr [ESP + 0x94]
MOV EAX,dword ptr [ESP + 0x94]
MOV ESI,EAX
MOV EDI,EAX
MOVZX ECX,AH
SHR ESI,0x18
SHR EDI,0x10
CMP dword ptr [EBP + 0x40],0x1
JZ 0x00165e90
MOV EDX,ESI
MOV byte ptr [EBX + 0x2],CL
MOV byte ptr [EBX],DL
LEA ECX,[EBX + 0x4]
MOV EDX,EDI
MOV byte ptr [EBX + 0x1],DL
MOV byte ptr [EBX + 0x3],AL
MOV EAX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + 0x2a8]
MOV EDI,dword ptr [EAX + 0x34]
TEST EDI,EDI
JNZ 0x00165998
FLD ST0
JMP 0x001659b3
MOV ECX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x8],0x0
FLD dword ptr [EBX + 0xffec18a8]
TEST ECX,ECX
JLE 0x00163b94
MOV EDI,dword ptr [ESP + 0x34]
JMP 0x00165c42
MOV EAX,dword ptr [EAX + 0x38]
MOV EBX,dword ptr [ESP + 0xc8]
FLD qword ptr [EBX + EAX*0x8]
FMUL qword ptr [EBP + 0x44]
FADD qword ptr [EBP + 0xc]
FSTP qword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,EDX
MOVZX ESI,DH
SHR EAX,0x18
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,EDX
SHR EAX,0x10
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV EBX,EAX
SHR EBX,0x18
MOV dword ptr [ESP + 0x28],EBX
MOV EBX,EAX
SHR EBX,0x10
CMP dword ptr [EBP + 0x40],0x1
MOV dword ptr [ESP + 0x30],EBX
MOVZX EBX,AH
MOV dword ptr [ESP + 0x10],EBX
JZ 0x00165f98
MOVZX EBX,byte ptr [ESP + 0x18]
MOV byte ptr [ECX + 0x3],DL
MOV byte ptr [ECX],BL
MOVZX EBX,byte ptr [ESP + 0x20]
MOV byte ptr [ECX + 0x1],BL
MOV EBX,ESI
MOV byte ptr [ECX + 0x2],BL
MOVZX EBX,byte ptr [ESP + 0x28]
MOV byte ptr [ECX + 0x4],BL
MOVZX EBX,byte ptr [ESP + 0x30]
MOV byte ptr [ECX + 0x5],BL
MOVZX EBX,byte ptr [ESP + 0x10]
MOV byte ptr [ECX + 0x6],BL
MOV byte ptr [ECX + 0x7],AL
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EDI + 0x298]
ADD dword ptr [ESP + 0x8],0x1
LEA EAX,[EBX + EAX*0x8]
MOV dword ptr [ESP + 0xc8],EAX
MOV EAX,dword ptr [EBP + 0x24]
LEA ESI,[ECX + EAX*0x1 + 0x8]
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,dword ptr [ESP + 0x4c]
JZ 0x00163b98
MOV EAX,dword ptr [EDI + 0x2a8]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x8]
FLD qword ptr [EBX + EAX*0x8]
FMUL qword ptr [EBP + 0x44]
FADD qword ptr [EBP + 0xc]
FSTP qword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,EDX
MOVZX EBX,DH
SHR EAX,0x18
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,EDX
SHR EAX,0x10
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,EAX
SHR ECX,0x18
MOV dword ptr [ESP + 0x28],ECX
MOV ECX,EAX
SHR ECX,0x10
CMP dword ptr [EBP + 0x40],0x1
MOV dword ptr [ESP + 0x30],ECX
MOVZX ECX,AH
MOV dword ptr [ESP + 0x10],ECX
JZ 0x00165f30
MOV byte ptr [ESI + 0x2],BL
MOVZX EBX,byte ptr [ESP + 0x28]
MOVZX ECX,byte ptr [ESP + 0x18]
MOV byte ptr [ESI + 0x3],DL
MOV byte ptr [ESI + 0x7],AL
MOV byte ptr [ESI + 0x4],BL
MOVZX EBX,byte ptr [ESP + 0x30]
MOV byte ptr [ESI],CL
MOVZX ECX,byte ptr [ESP + 0x20]
MOV byte ptr [ESI + 0x5],BL
MOVZX EBX,byte ptr [ESP + 0x10]
MOV byte ptr [ESI + 0x1],CL
MOV byte ptr [ESI + 0x6],BL
MOV EAX,dword ptr [EDI + 0x2a8]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x14]
FLD qword ptr [EBX + EAX*0x8]
FMUL qword ptr [EBP + 0x44]
FADD qword ptr [EBP + 0xc]
FSTP qword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,EDX
MOVZX EBX,DH
SHR EAX,0x18
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,EDX
SHR EAX,0x10
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,EAX
SHR ECX,0x18
MOV dword ptr [ESP + 0x28],ECX
MOV ECX,EAX
SHR ECX,0x10
CMP dword ptr [EBP + 0x40],0x1
MOV dword ptr [ESP + 0x30],ECX
MOVZX ECX,AH
MOV dword ptr [ESP + 0x10],ECX
JZ 0x00165ef0
MOV byte ptr [ESI + 0xa],BL
MOVZX EBX,byte ptr [ESP + 0x28]
MOVZX ECX,byte ptr [ESP + 0x18]
MOV byte ptr [ESI + 0xb],DL
LEA EDX,[ESI + 0x10]
MOV byte ptr [ESI + 0xf],AL
MOV byte ptr [ESI + 0xc],BL
MOVZX EBX,byte ptr [ESP + 0x30]
MOV byte ptr [ESI + 0x8],CL
MOVZX ECX,byte ptr [ESP + 0x20]
MOV byte ptr [ESI + 0xd],BL
MOVZX EBX,byte ptr [ESP + 0x10]
MOV byte ptr [ESI + 0x9],CL
MOV byte ptr [ESI + 0xe],BL
MOV EAX,dword ptr [EDI + 0x2a8]
MOV EBX,dword ptr [ESP + 0xc8]
MOV EAX,dword ptr [EAX + 0x20]
FLD qword ptr [EBX + EAX*0x8]
FMUL qword ptr [EBP + 0x44]
FADD qword ptr [EBP + 0xc]
FSTP qword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x14]
MOV EAX,ECX
MOVZX ESI,CH
SHR EAX,0x18
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,ECX
SHR EAX,0x10
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV EBX,EAX
SHR EBX,0x18
MOV dword ptr [ESP + 0x28],EBX
MOV EBX,EAX
SHR EBX,0x10
CMP dword ptr [EBP + 0x40],0x1
MOV dword ptr [ESP + 0x30],EBX
MOVZX EBX,AH
MOV dword ptr [ESP + 0x10],EBX
JZ 0x00165eb0
MOVZX EBX,byte ptr [ESP + 0x18]
MOV byte ptr [EDX + 0x3],CL
LEA ECX,[EDX + 0x8]
MOV byte ptr [EDX + 0x7],AL
MOV byte ptr [EDX],BL
MOVZX EBX,byte ptr [ESP + 0x20]
MOV byte ptr [EDX + 0x1],BL
MOV EBX,ESI
MOV byte ptr [EDX + 0x2],BL
MOVZX EBX,byte ptr [ESP + 0x28]
MOV byte ptr [EDX + 0x4],BL
MOVZX EBX,byte ptr [ESP + 0x30]
MOV byte ptr [EDX + 0x5],BL
MOVZX EBX,byte ptr [ESP + 0x10]
MOV byte ptr [EDX + 0x6],BL
MOV EAX,dword ptr [EDI + 0x2a8]
MOV EDX,dword ptr [EAX + 0x34]
TEST EDX,EDX
JNZ 0x00165b88
FLD ST0
JMP 0x00165b95
MOV dword ptr [ESP + 0x78],0x3ff
MOV dword ptr [ESP + 0x7c],0x0
JMP 0x001656db
FSTP ST0
JMP 0x00165e32
FSTP ST0
MOV dword ptr [ESP + 0x70],0x0
MOV dword ptr [ESP + 0x74],0x0
JMP 0x00165285
FSTP ST0
JMP 0x00165e52
FSTP ST0
MOV dword ptr [ESP + 0x60],0x0
MOV dword ptr [ESP + 0x64],0x0
JMP 0x001655a6
FSTP ST0
JMP 0x00165e72
FSTP ST0
MOV dword ptr [ESP + 0x68],0x0
MOV dword ptr [ESP + 0x6c],0x0
JMP 0x00165416
MOV byte ptr [EBX],AL
MOV EAX,EDI
MOV byte ptr [EBX + 0x2],AL
MOV EAX,ESI
MOV byte ptr [EBX + 0x1],CL
LEA ECX,[EBX + 0x4]
MOV byte ptr [EBX + 0x3],AL
JMP 0x00165b42
MOV byte ptr [EDX],AL
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [EDX + 0x4],CL
LEA ECX,[EDX + 0x8]
MOV byte ptr [EDX + 0x1],AL
MOVZX EAX,byte ptr [ESP + 0x30]
MOV byte ptr [EDX + 0x2],AL
MOVZX EAX,byte ptr [ESP + 0x28]
MOV byte ptr [EDX + 0x3],AL
MOV EAX,ESI
MOV byte ptr [EDX + 0x5],AL
MOVZX EAX,byte ptr [ESP + 0x20]
MOV byte ptr [EDX + 0x6],AL
MOVZX EAX,byte ptr [ESP + 0x18]
MOV byte ptr [EDX + 0x7],AL
JMP 0x00165df2
MOV byte ptr [ESI + 0x8],AL
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ESI + 0xc],DL
LEA EDX,[ESI + 0x10]
MOV byte ptr [ESI + 0xd],BL
MOV byte ptr [ESI + 0x9],AL
MOVZX EAX,byte ptr [ESP + 0x30]
MOV byte ptr [ESI + 0xa],AL
MOVZX EAX,byte ptr [ESP + 0x28]
MOV byte ptr [ESI + 0xb],AL
MOVZX EAX,byte ptr [ESP + 0x20]
MOV byte ptr [ESI + 0xe],AL
MOVZX EAX,byte ptr [ESP + 0x18]
MOV byte ptr [ESI + 0xf],AL
JMP 0x00165d60
MOV byte ptr [ESI],AL
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ESI + 0x4],DL
MOV byte ptr [ESI + 0x5],BL
MOV byte ptr [ESI + 0x1],AL
MOVZX EAX,byte ptr [ESP + 0x30]
MOV byte ptr [ESI + 0x2],AL
MOVZX EAX,byte ptr [ESP + 0x28]
MOV byte ptr [ESI + 0x3],AL
MOVZX EAX,byte ptr [ESP + 0x20]
MOV byte ptr [ESI + 0x6],AL
MOVZX EAX,byte ptr [ESP + 0x18]
MOV byte ptr [ESI + 0x7],AL
JMP 0x00165ccf
MOV byte ptr [ESI + 0x4],AL
MOV EAX,EDI
MOV byte ptr [ESI + 0x6],BL
LEA EBX,[ESI + 0x8]
MOV byte ptr [ESI + 0x5],CL
MOV byte ptr [ESI + 0x7],AL
JMP 0x00165ae0
MOV byte ptr [ESI],AL
MOV EAX,EDI
MOV byte ptr [ESI + 0x1],CL
MOV byte ptr [ESI + 0x2],BL
MOV byte ptr [ESI + 0x3],AL
JMP 0x00165a7f
MOV byte ptr [ECX],AL
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ECX + 0x4],DL
MOV byte ptr [ECX + 0x1],AL
MOVZX EAX,byte ptr [ESP + 0x30]
MOV byte ptr [ECX + 0x2],AL
MOVZX EAX,byte ptr [ESP + 0x28]
MOV byte ptr [ECX + 0x3],AL
MOV EAX,ESI
MOV byte ptr [ECX + 0x5],AL
MOVZX EAX,byte ptr [ESP + 0x20]
MOV byte ptr [ECX + 0x6],AL
MOVZX EAX,byte ptr [ESP + 0x18]
JMP 0x00165c0e
MOV byte ptr [ECX],AL
MOV EAX,ESI
MOV byte ptr [ECX + 0x2],AL
MOV EAX,EDI
MOV byte ptr [ECX + 0x1],BL
JMP 0x001659ea
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ECX,dword ptr [ESP + 0x88]
JMP 0x0016540a
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ECX,dword ptr [ESP + 0x88]
JMP 0x0016559a
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
JMP 0x00165279
FSTP ST0
MOV dword ptr [ESP + 0x68],0xffffffff
MOV dword ptr [ESP + 0x6c],0x0
JMP 0x00165416
FSTP ST0
MOV dword ptr [ESP + 0x70],0xffffffff
MOV dword ptr [ESP + 0x74],0x0
JMP 0x00165285
FSTP ST0
MOV dword ptr [ESP + 0x60],0xffffffff
MOV dword ptr [ESP + 0x64],0x0
JMP 0x001655a6
FLD dword ptr [EAX + 0xffec18a8]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00164f7b
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EAX + 0xffec12b8]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP dword ptr [ESP + 0x84]
FLDCW word ptr [ESP + 0x92]
MOV EBX,dword ptr [ESP + 0x84]
MOVZX EAX,BH
MOV dword ptr [ESP + 0x10],EAX
JMP 0x00164d85
FMUL dword ptr [EAX + 0xffeca148]
FLD qword ptr [EAX + 0xffeca160]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00164c66
FNSTCW word ptr [ESP + 0x92]
FADD dword ptr [EAX + 0xffec12b8]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV EAX,dword ptr [ESP + 0x88]
MOV ESI,EAX
MOV EDX,EAX
SHR ESI,0x18
SHR EDX,0x10
MOV EDI,ESI
MOVZX ESI,AH
JMP 0x00164a15
MOV EDX,dword ptr [EDI + 0x20]
MOV EBX,dword ptr [ESP + 0xc8]
FLD qword ptr [EBX + EDX*0x8]
FUCOMI ST0,ST0
JNP 0x00165520
FSTP ST0
MOV dword ptr [ESP + 0x60],0x0
MOV dword ptr [ESP + 0x64],0x0
JMP 0x001655ba
MOV EDX,dword ptr [EDI + 0x14]
MOV EBX,dword ptr [ESP + 0xc8]
FLD qword ptr [EBX + EDX*0x8]
FUCOMI ST0,ST0
JNP 0x00165390
FSTP ST0
MOV dword ptr [ESP + 0x68],0x0
MOV dword ptr [ESP + 0x6c],0x0
JMP 0x0016542a
MOV EBX,dword ptr [ESP + 0x4c]
TEST EBX,EBX
JLE 0x00163b9a
MOV EBX,dword ptr [EDX + 0x50]
MOV dword ptr [ESP + 0x20],0x0
MOV dword ptr [ESP + 0xcc],ESI
NOP
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x8],0x0
MOV ESI,dword ptr [ESP + 0xc8]
MOV EDX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [EDX + 0x8]
FLD qword ptr [ESI + EAX*0x8]
FUCOMI ST0,ST0
JP 0x001662c7
FLDZ
MOV EAX,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x001662cb
FMUL dword ptr [EAX + 0xffee77bc]
MOV dword ptr [ESP + 0x8],0xffffffff
FDIV dword ptr [EAX + 0xffec18a8]
FLD dword ptr [EAX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001662cf
FADD dword ptr [EAX + 0xffec12b8]
FLD dword ptr [EAX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x0016684e
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ESI,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x8],ESI
JMP 0x001662d8
FSTP ST0
JMP 0x001662d8
FSTP ST0
JMP 0x001662d8
FSTP ST0
LEA ESI,[ESI]
TEST EBX,EBX
JNZ 0x001662e8
MOV dword ptr [EBP + 0x50],0x20
MOV EBX,0x20
MOV ESI,dword ptr [ESP + 0x48]
TEST ESI,ESI
MOV EAX,ESI
JLE 0x001663b1
MOV ESI,dword ptr [EBP + 0x4c]
LEA ESI,[ESI]
MOV ECX,dword ptr [ESP + 0x48]
CMP EAX,EBX
MOV EDI,EBX
CMOVBE EDI,EAX
MOV EDX,dword ptr [ESP + 0x8]
SUB ECX,EAX
SUB EAX,EDI
SHR EDX,CL
MOV ECX,dword ptr [EBP + 0x54]
AND EDX,dword ptr [ECX + EDI*0x4]
MOV ECX,0x20
SUB ECX,EBX
SUB EBX,EDI
MOV dword ptr [EBP + 0x50],EBX
SHL EDX,CL
OR ESI,EDX
MOV dword ptr [EBP + 0x4c],ESI
TEST EBX,EBX
JNZ 0x0016639b
MOV EDX,ESI
MOV EBX,ESI
MOV ECX,ESI
SHR EDX,0x8
SHR ECX,0x10
SHR EBX,0x18
MOV dword ptr [ESP + 0x18],EDX
CMP dword ptr [EBP + 0x40],0x1
MOV EDX,dword ptr [ESP + 0xcc]
MOV dword ptr [ESP + 0x10],ECX
LEA EDI,[EDX + 0x4]
JZ 0x00166810
MOV byte ptr [EDX],BL
MOV EBX,EDX
MOVZX EDX,byte ptr [ESP + 0x10]
MOV byte ptr [EBX + 0x1],DL
MOVZX EDX,byte ptr [ESP + 0x18]
MOV byte ptr [EBX + 0x2],DL
MOV EDX,EBX
MOV EBX,ESI
MOV byte ptr [EDX + 0x3],BL
MOV EBX,dword ptr [EBP]
MOV dword ptr [EBP + 0x4c],0x0
XOR ESI,ESI
MOV dword ptr [EBP + 0x50],0x20
MOV dword ptr [ESP + 0xcc],EDI
MOV dword ptr [ESP + 0x48],EBX
MOV EBX,0x20
TEST EAX,EAX
JG 0x00166300
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [ESP + 0x48]
MOV ECX,dword ptr [EDX + 0x14]
MOV dword ptr [ESP + 0x8],0x0
MOV ESI,dword ptr [ESP + 0xc8]
FLD qword ptr [ESI + ECX*0x8]
FUCOMI ST0,ST0
JP 0x0016644e
FLDZ
MOV ESI,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x00166452
FMUL dword ptr [ESI + 0xffee77bc]
MOV dword ptr [ESP + 0x8],0xffffffff
FDIV dword ptr [ESI + 0xffec18a8]
FLD dword ptr [ESI + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00166456
FADD dword ptr [ESI + 0xffec12b8]
FLD dword ptr [ESI + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x0016688b
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX ECX,word ptr [ESP + 0x92]
OR CH,0xc
MOV word ptr [ESP + 0x90],CX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ESI,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x8],ESI
JMP 0x00166460
FSTP ST0
JMP 0x00166460
FSTP ST0
JMP 0x00166460
FSTP ST0
NOP
LEA ESI,[ESI]
MOV ESI,dword ptr [ESP + 0x48]
TEST ESI,ESI
JLE 0x00166521
MOV ESI,dword ptr [EBP + 0x4c]
NOP
MOV ECX,dword ptr [ESP + 0x48]
CMP EAX,EBX
MOV EDI,EBX
CMOVBE EDI,EAX
MOV EDX,dword ptr [ESP + 0x8]
SUB ECX,EAX
SUB EAX,EDI
SHR EDX,CL
MOV ECX,dword ptr [EBP + 0x54]
AND EDX,dword ptr [ECX + EDI*0x4]
MOV ECX,0x20
SUB ECX,EBX
SUB EBX,EDI
MOV dword ptr [EBP + 0x50],EBX
SHL EDX,CL
OR ESI,EDX
MOV dword ptr [EBP + 0x4c],ESI
TEST EBX,EBX
JNZ 0x0016650b
MOV EDX,ESI
MOV EBX,ESI
MOV ECX,ESI
SHR EDX,0x8
SHR ECX,0x10
SHR EBX,0x18
MOV dword ptr [ESP + 0x18],EDX
CMP dword ptr [EBP + 0x40],0x1
MOV EDX,dword ptr [ESP + 0xcc]
MOV dword ptr [ESP + 0x10],ECX
LEA EDI,[EDX + 0x4]
JZ 0x00166830
MOV byte ptr [EDX],BL
MOV EBX,EDX
MOVZX EDX,byte ptr [ESP + 0x10]
MOV byte ptr [EBX + 0x1],DL
MOVZX EDX,byte ptr [ESP + 0x18]
MOV byte ptr [EBX + 0x2],DL
MOV EDX,EBX
MOV EBX,ESI
MOV byte ptr [EDX + 0x3],BL
MOV EBX,dword ptr [EBP]
MOV dword ptr [EBP + 0x4c],0x0
XOR ESI,ESI
MOV dword ptr [EBP + 0x50],0x20
MOV dword ptr [ESP + 0xcc],EDI
MOV dword ptr [ESP + 0x48],EBX
MOV EBX,0x20
TEST EAX,EAX
JG 0x00166470
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [ESP + 0x48]
MOV ECX,dword ptr [EDX + 0x20]
MOV dword ptr [ESP + 0x8],0x0
MOV ESI,dword ptr [ESP + 0xc8]
FLD qword ptr [ESI + ECX*0x8]
FUCOMI ST0,ST0
JP 0x001665be
FLDZ
MOV ESI,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JNC 0x001665c2
FMUL dword ptr [ESI + 0xffee77bc]
MOV dword ptr [ESP + 0x8],0xffffffff
FDIV dword ptr [ESI + 0xffec18a8]
FLD dword ptr [ESI + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001665c6
FADD dword ptr [ESI + 0xffec12b8]
FLD dword ptr [ESI + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x001668c8
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX ECX,word ptr [ESP + 0x92]
OR CH,0xc
MOV word ptr [ESP + 0x90],CX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ESI,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x8],ESI
JMP 0x001665d0
FSTP ST0
JMP 0x001665d0
FSTP ST0
JMP 0x001665d0
FSTP ST0
NOP
LEA ESI,[ESI]
MOV ECX,dword ptr [ESP + 0x48]
TEST ECX,ECX
JLE 0x00166691
MOV ESI,dword ptr [EBP + 0x4c]
NOP
MOV ECX,dword ptr [ESP + 0x48]
CMP EAX,EBX
MOV EDI,EBX
CMOVBE EDI,EAX
MOV EDX,dword ptr [ESP + 0x8]
SUB ECX,EAX
SUB EAX,EDI
SHR EDX,CL
MOV ECX,dword ptr [EBP + 0x54]
AND EDX,dword ptr [ECX + EDI*0x4]
MOV ECX,0x20
SUB ECX,EBX
SUB EBX,EDI
MOV dword ptr [EBP + 0x50],EBX
SHL EDX,CL
OR ESI,EDX
MOV dword ptr [EBP + 0x4c],ESI
TEST EBX,EBX
JNZ 0x0016667b
MOV EDX,ESI
MOV EBX,ESI
MOV ECX,ESI
SHR EDX,0x8
SHR ECX,0x10
SHR EBX,0x18
MOV dword ptr [ESP + 0x18],EDX
CMP dword ptr [EBP + 0x40],0x1
MOV EDX,dword ptr [ESP + 0xcc]
MOV dword ptr [ESP + 0x10],ECX
LEA EDI,[EDX + 0x4]
JZ 0x001667d0
MOV byte ptr [EDX],BL
MOV EBX,EDX
MOVZX EDX,byte ptr [ESP + 0x10]
MOV byte ptr [EBX + 0x1],DL
MOVZX EDX,byte ptr [ESP + 0x18]
MOV byte ptr [EBX + 0x2],DL
MOV EDX,EBX
MOV EBX,ESI
MOV byte ptr [EDX + 0x3],BL
MOV EBX,dword ptr [EBP]
MOV dword ptr [EBP + 0x4c],0x0
XOR ESI,ESI
MOV dword ptr [EBP + 0x50],0x20
MOV dword ptr [ESP + 0xcc],EDI
MOV dword ptr [ESP + 0x48],EBX
MOV EBX,0x20
TEST EAX,EAX
JG 0x001665e0
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EAX + 0x2a8]
MOV EAX,dword ptr [ESP + 0x48]
MOV ECX,dword ptr [EDX + 0x34]
MOV dword ptr [ESP + 0x8],0x3ff
TEST ECX,ECX
JZ 0x001666d0
MOV EDX,dword ptr [EDX + 0x38]
MOV dword ptr [ESP + 0x8],0x0
MOV ESI,dword ptr [ESP + 0xc8]
FLD qword ptr [ESI + EDX*0x8]
FUCOMI ST0,ST0
JP 0x001666cb
FLDZ
MOV ESI,dword ptr [ESP + 0x30]
FUCOMIP ST0,ST1
JC 0x0016693a
FSTP ST0
JMP 0x001666d0
FSTP ST0
LEA ESI,[ESI]
MOV EDX,dword ptr [ESP + 0x48]
TEST EDX,EDX
JLE 0x00166783
MOV ESI,dword ptr [EBP + 0x4c]
MOV ECX,dword ptr [ESP + 0x48]
JMP 0x001666eb
MOV ECX,dword ptr [EBP]
MOV EDX,dword ptr [ESP + 0x8]
CMP EAX,EBX
MOV EDI,EBX
CMOVBE EDI,EAX
SUB ECX,EAX
SUB EAX,EDI
SHR EDX,CL
MOV ECX,dword ptr [EBP + 0x54]
AND EDX,dword ptr [ECX + EDI*0x4]
MOV ECX,0x20
SUB ECX,EBX
SUB EBX,EDI
MOV dword ptr [EBP + 0x50],EBX
SHL EDX,CL
OR ESI,EDX
MOV dword ptr [EBP + 0x4c],ESI
TEST EBX,EBX
JNZ 0x0016677b
MOV EDX,ESI
MOV EBX,ESI
MOV ECX,ESI
SHR EDX,0x8
SHR ECX,0x10
SHR EBX,0x18
MOV dword ptr [ESP + 0x18],EDX
CMP dword ptr [EBP + 0x40],0x1
MOV EDX,dword ptr [ESP + 0xcc]
MOV dword ptr [ESP + 0x10],ECX
LEA EDI,[EDX + 0x4]
JZ 0x001667f0
MOV byte ptr [EDX],BL
MOV EBX,EDX
MOVZX EDX,byte ptr [ESP + 0x10]
MOV byte ptr [EBX + 0x1],DL
MOVZX EDX,byte ptr [ESP + 0x18]
MOV byte ptr [EBX + 0x2],DL
MOV EDX,EBX
MOV EBX,ESI
MOV byte ptr [EDX + 0x3],BL
MOV dword ptr [EBP + 0x4c],0x0
XOR ESI,ESI
MOV EBX,0x20
MOV dword ptr [EBP + 0x50],0x20
MOV dword ptr [ESP + 0xcc],EDI
TEST EAX,EAX
JG 0x001666e8
MOV EAX,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0xc8]
ADD dword ptr [ESP + 0x20],0x1
MOV EAX,dword ptr [EAX + 0x298]
LEA EAX,[ESI + EAX*0x8]
MOV dword ptr [ESP + 0xc8],EAX
MOV EAX,dword ptr [EBP + 0x24]
ADD dword ptr [ESP + 0xcc],EAX
MOV EAX,dword ptr [ESP + 0x20]
CMP EAX,dword ptr [ESP + 0x4c]
JZ 0x00163b9a
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESP + 0x48],EAX
JMP 0x00166220
MOV ECX,EDX
MOV EDX,ESI
MOV byte ptr [ECX],DL
MOVZX EDX,byte ptr [ESP + 0x18]
MOV byte ptr [ECX + 0x3],BL
MOV byte ptr [ECX + 0x1],DL
MOVZX EDX,byte ptr [ESP + 0x10]
MOV byte ptr [ECX + 0x2],DL
JMP 0x00166658
MOV ECX,EDX
MOV EDX,ESI
MOV byte ptr [ECX],DL
MOVZX EDX,byte ptr [ESP + 0x18]
MOV byte ptr [ECX + 0x3],BL
MOV byte ptr [ECX + 0x1],DL
MOVZX EDX,byte ptr [ESP + 0x10]
MOV byte ptr [ECX + 0x2],DL
JMP 0x0016675f
MOV ECX,EDX
MOV EDX,ESI
MOV byte ptr [ECX],DL
MOVZX EDX,byte ptr [ESP + 0x18]
MOV byte ptr [ECX + 0x3],BL
MOV byte ptr [ECX + 0x1],DL
MOVZX EDX,byte ptr [ESP + 0x10]
MOV byte ptr [ECX + 0x2],DL
JMP 0x00166378
MOV ECX,EDX
MOV EDX,ESI
MOV byte ptr [ECX],DL
MOVZX EDX,byte ptr [ESP + 0x18]
MOV byte ptr [ECX + 0x3],BL
MOV byte ptr [ECX + 0x1],DL
MOVZX EDX,byte ptr [ESP + 0x10]
MOV byte ptr [ECX + 0x2],DL
JMP 0x001664e8
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EAX,word ptr [ESP + 0x92]
OR AH,0xc
MOV word ptr [ESP + 0x90],AX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ESI,dword ptr [ESP + 0x88]
JMP 0x001662c1
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX ECX,word ptr [ESP + 0x92]
OR CH,0xc
MOV word ptr [ESP + 0x90],CX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ESI,dword ptr [ESP + 0x88]
JMP 0x00166448
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX ECX,word ptr [ESP + 0x92]
OR CH,0xc
MOV word ptr [ESP + 0x90],CX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ESI,dword ptr [ESP + 0x88]
JMP 0x001665b8
FMUL dword ptr [EBX + 0xffee77bc]
FDIV dword ptr [EBX + 0xffec18a8]
FLD dword ptr [EBX + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JC 0x001669a9
FSTP ST0
MOV dword ptr [ESP + 0x78],0xffffffff
MOV dword ptr [ESP + 0x7c],0x0
JMP 0x001656db
FMUL dword ptr [ESI + 0xffee77bc]
FDIV dword ptr [ESI + 0xffec18a8]
FLD dword ptr [ESI + 0xffec18b0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JC 0x00166a14
FSTP ST0
MOV dword ptr [ESP + 0x8],0xffffffff
JMP 0x001666d0
MOV EBX,dword ptr [ESP + 0x30]
LEA EAX,[EBX + 0xffee7758]
PUSH EAX
LEA EAX,[EBX + 0xffee7238]
PUSH 0x292
PUSH EAX
LEA EAX,[EBX + 0xffec29d4]
PUSH EAX
CALL 0x000313d0
LEA EAX,[EBX + 0xffee7758]
PUSH EAX
LEA EAX,[EBX + 0xffee7238]
PUSH 0x291
PUSH EAX
LEA EAX,[EBX + 0xffec1be4]
PUSH EAX
CALL 0x000313d0
FADD dword ptr [EBX + 0xffec12b8]
FLD dword ptr [EBX + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x00166a67
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ECX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x78],ECX
MOV dword ptr [ESP + 0x7c],0x0
JMP 0x001656db
FSTP ST0
MOV EBX,0xffffffff
JMP 0x0016475a
FADD dword ptr [ESI + 0xffec12b8]
FLD dword ptr [ESI + 0xffec12c8]
FXCH
FUCOMI ST0,ST1
JNC 0x00166aa4
FSTP ST1
FNSTCW word ptr [ESP + 0x92]
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ESI,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x8],ESI
JMP 0x001666d0
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ECX,dword ptr [ESP + 0x88]
JMP 0x001669f7
FNSTCW word ptr [ESP + 0x92]
FSUBRP
MOVZX EDX,word ptr [ESP + 0x92]
OR DH,0xc
MOV word ptr [ESP + 0x90],DX
FLDCW word ptr [ESP + 0x90]
FISTP qword ptr [ESP + 0x88]
FLDCW word ptr [ESP + 0x92]
MOV ESI,dword ptr [ESP + 0x88]
JMP 0x00166a5e
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid __regparm2\nFUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)\n\n{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  byte bVar8;\n  byte bVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  byte bVar13;\n  int iVar14;\n  byte bVar15;\n  byte bVar16;\n  byte bVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  float fVar22;\n  uint local_b4;\n  byte local_ac;\n  byte local_a4;\n  int local_9c;\n  byte local_94;\n  byte local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (param_7 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar18 = *param_2;\n  if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }\n  uVar20 = 0;\n  if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }\n  bVar13 = (byte)(uVar20 - 1);\n  bVar15 = bVar13 & 0x1f;\n  uVar10 = 2 << (bVar13 & 0x1f);\n  uVar21 = uVar10;\n  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;\n  if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }\n  local_7c = uVar21 - 1;\n  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);\nLAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );\n}\n\n" comment comment (function_definition "void __regparm2\nFUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)\n\n{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  byte bVar8;\n  byte bVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  byte bVar13;\n  int iVar14;\n  byte bVar15;\n  byte bVar16;\n  byte bVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  float fVar22;\n  uint local_b4;\n  byte local_ac;\n  byte local_a4;\n  int local_9c;\n  byte local_94;\n  byte local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (param_7 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar18 = *param_2;\n  if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }\n  uVar20 = 0;\n  if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }\n  bVar13 = (byte)(uVar20 - 1);\n  bVar15 = bVar13 & 0x1f;\n  uVar10 = 2 << (bVar13 & 0x1f);\n  uVar21 = uVar10;\n  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;\n  if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }\n  local_7c = uVar21 - 1;\n  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);\nLAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)" identifier (parameter_list "(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "byte *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  byte bVar8;\n  byte bVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  byte bVar13;\n  int iVar14;\n  byte bVar15;\n  byte bVar16;\n  byte bVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  float fVar22;\n  uint local_b4;\n  byte local_ac;\n  byte local_a4;\n  int local_9c;\n  byte local_94;\n  byte local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (param_7 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar18 = *param_2;\n  if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }\n  uVar20 = 0;\n  if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }\n  bVar13 = (byte)(uVar20 - 1);\n  bVar15 = bVar13 & 0x1f;\n  uVar10 = 2 << (bVar13 & 0x1f);\n  uVar21 = uVar10;\n  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;\n  if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }\n  local_7c = uVar21 - 1;\n  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);\nLAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "float fVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "float fVar22;" primitive_type identifier ;) (declaration "uint local_b4;" type_identifier identifier ;) (declaration "byte local_ac;" type_identifier identifier ;) (declaration "byte local_a4;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "byte local_94;" type_identifier identifier ;) (declaration "byte local_8c;" type_identifier identifier ;) (declaration "undefined8 local_84;" type_identifier identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int iStack_78;" primitive_type identifier ;) (declaration "uint local_74;" type_identifier identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (expression_statement "dVar5 = DAT_002e8160;" (assignment_expression "dVar5 = DAT_002e8160" identifier = identifier) ;) (expression_statement "fVar1 = DAT_002df8a8;" (assignment_expression "fVar1 = DAT_002df8a8" identifier = identifier) ;) (expression_statement "dVar3 = _DAT_002df2e0;" (assignment_expression "dVar3 = _DAT_002df2e0" identifier = identifier) ;) (if_statement "if (param_7 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }" { comment (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportBGRAQuantum"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }" if (parenthesized_expression "(*(int *)(param_7 + 0x1c) != -0x54535255)" ( (binary_expression "*(int *)(param_7 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_7 + 0x1c)" * (cast_expression "(int *)(param_7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x1c)" ( (binary_expression "param_7 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }" { comment (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum")" identifier (argument_list "("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum")" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportBGRAQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }" if (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) (compound_statement "{\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }" { (if_statement "if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }" { (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);" do (compound_statement "{\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      }" { (expression_statement "uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));" (assignment_expression "uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" identifier = (call_expression "FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" identifier (argument_list "((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" ( (cast_expression "(float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8))" ( (binary_expression "(longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (binary_expression "(longdouble)dVar3 *\n                                     (longdouble)" (cast_expression "(longdouble)dVar3" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (parenthesized_expression "(longdouble)" ( identifier ))) * (cast_expression "(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) ))) )))) ;) (expression_statement "uVar18 = uVar12 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar12 >> 8 & 0xff" identifier = (binary_expression "uVar12 >> 8 & 0xff" (binary_expression "uVar12 >> 8" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar20 = uVar12;" (assignment_expression "uVar20 = uVar12" identifier = identifier) ;) (if_statement "if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" { (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" identifier = identifier) ;) (expression_statement "uVar18 = uVar12;" (assignment_expression "uVar18 = uVar12" identifier = identifier) ;) })) (expression_statement "*param_6 = (byte)uVar18;" (assignment_expression "*param_6 = (byte)uVar18" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[1] = (byte)uVar20;" (assignment_expression "param_6[1] = (byte)uVar20" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "dVar5 = _DAT_002df2e0;" (assignment_expression "dVar5 = _DAT_002df2e0" identifier = identifier) ;) (expression_statement "uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));" (assignment_expression "uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" identifier = (call_expression "FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" identifier (argument_list "((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" ( (cast_expression "(float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0)" ( (binary_expression "(longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0" (binary_expression "(longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (parenthesized_expression "(longdouble)" ( identifier )) * (cast_expression "(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) * (cast_expression "(longdouble)_DAT_002df2e0" ( (type_descriptor "longdouble" type_identifier) ) identifier)) ))) )))) ;) (expression_statement "uVar18 = uVar12 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar12 >> 8 & 0xff" identifier = (binary_expression "uVar12 >> 8 & 0xff" (binary_expression "uVar12 >> 8" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar20 = uVar12;" (assignment_expression "uVar20 = uVar12" identifier = identifier) ;) (if_statement "if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" { (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" identifier = identifier) ;) (expression_statement "uVar18 = uVar12;" (assignment_expression "uVar18 = uVar12" identifier = identifier) ;) })) (expression_statement "param_6[2] = (byte)uVar18;" (assignment_expression "param_6[2] = (byte)uVar18" (subscript_expression "param_6[2]" identifier [ number_literal ]) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));" (assignment_expression "uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" identifier = (call_expression "FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" identifier (argument_list "((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" ( (cast_expression "(float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8))" ( (binary_expression "(longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (binary_expression "(longdouble)dVar5 *\n                                     (longdouble)" (cast_expression "(longdouble)dVar5" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (parenthesized_expression "(longdouble)" ( identifier ))) * (cast_expression "(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) ))) )))) ;) (expression_statement "bVar15 = (byte)(uVar18 >> 8);" (assignment_expression "bVar15 = (byte)(uVar18 >> 8)" identifier = (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 8)" ( (binary_expression "uVar18 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" { (expression_statement "bVar15 = (byte)uVar18;" (assignment_expression "bVar15 = (byte)uVar18" identifier = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = uVar18 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar18 >> 8 & 0xff" identifier = (binary_expression "uVar18 >> 8 & 0xff" (binary_expression "uVar18 >> 8" identifier >> number_literal) & number_literal)) ;) })) (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[5] = (byte)uVar18;" (assignment_expression "param_6[5] = (byte)uVar18" (subscript_expression "param_6[5]" identifier [ number_literal ]) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          fVar1 = 1.0;\n        }" { (expression_statement "fVar1 = 1.0;" (assignment_expression "fVar1 = 1.0" identifier = number_literal) ;) }) (else_clause "else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" else (compound_statement "{\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" { (expression_statement "fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));" (assignment_expression "fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" identifier = (cast_expression "(float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" ( (binary_expression "(longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (binary_expression "(longdouble)_DAT_002df2e0 *\n                         (longdouble)" (cast_expression "(longdouble)_DAT_002df2e0" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (parenthesized_expression "(longdouble)" ( identifier ))) * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) )))) ;) }))) (expression_statement "uVar18 = FUN_001533f0(fVar1);" (assignment_expression "uVar18 = FUN_001533f0(fVar1)" identifier = (call_expression "FUN_001533f0(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))) ;) (expression_statement "bVar15 = (byte)(uVar18 >> 8);" (assignment_expression "bVar15 = (byte)(uVar18 >> 8)" identifier = (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 8)" ( (binary_expression "uVar18 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" { (expression_statement "bVar15 = (byte)uVar18;" (assignment_expression "bVar15 = (byte)uVar18" identifier = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = uVar18 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar18 >> 8 & 0xff" identifier = (binary_expression "uVar18 >> 8 & 0xff" (binary_expression "uVar18 >> 8" identifier >> number_literal) & number_literal)) ;) })) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_6[6] = bVar15;" (assignment_expression "param_6[6] = bVar15" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = (byte)uVar18;" (assignment_expression "param_6[7] = (byte)uVar18" (subscript_expression "param_6[7]" identifier [ number_literal ]) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6 = param_6 + param_2[9] + 8;" (assignment_expression "param_6 = param_6 + param_2[9] + 8" identifier = (binary_expression "param_6 + param_2[9] + 8" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(local_b4 != param_3)" ( (binary_expression "local_b4 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 < 1) {\n      return;\n    }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );" do (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" { (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" { (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" identifier = (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" identifier = identifier) ;) (expression_statement "bVar9 = (byte)iVar19;" (assignment_expression "bVar9 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }" { (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar9 = bVar15;" (assignment_expression "bVar9 = bVar15" identifier = identifier) ;) })) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_6 = bVar9;" (assignment_expression "*param_6 = bVar9" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" { (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" { (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" identifier = (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" { (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" identifier = identifier) ;) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" { (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" { (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" identifier = (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" { (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" identifier = identifier) ;) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (expression_statement "param_6[5] = bVar13;" (assignment_expression "param_6[5] = bVar13" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }" { (labeled_statement "LAB_00164f80:\n        iVar19 = -1;" statement_identifier : (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;)) (expression_statement "local_ac = 0xff;" (assignment_expression "local_ac = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" else (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          iVar19 = 0;\n          local_ac = 0;\n        }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;) }) (else_clause "else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" else (compound_statement "{\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" { (if_statement "if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00164f80;" goto statement_identifier ;)) (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_ac = (byte)((uint)iVar19 >> 8);" (assignment_expression "local_ac = (byte)((uint)iVar19 >> 8)" identifier = (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))) }))) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }" { (expression_statement "bVar15 = local_ac;" (assignment_expression "bVar15 = local_ac" identifier = identifier) ;) (expression_statement "local_ac = (byte)iVar19;" (assignment_expression "local_ac = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (expression_statement "param_6[7] = bVar15;" (assignment_expression "param_6[7] = bVar15" (subscript_expression "param_6[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_6[6] = local_ac;" (assignment_expression "param_6[6] = local_ac" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[9] + 8;" (assignment_expression "param_6 = param_6 + param_2[9] + 8" identifier = (binary_expression "param_6 + param_2[9] + 8" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (if_statement "if (local_b4 == param_3) {\n        return;\n      }" if (parenthesized_expression "(local_b4 == param_3)" ( (binary_expression "local_b4 == param_3" identifier == identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" if (parenthesized_expression "(uVar18 < 0x11)" ( (binary_expression "uVar18 < 0x11" identifier < number_literal) )) (compound_statement "{\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }" { (if_statement "if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }" if (parenthesized_expression "(uVar18 == 8)" ( (binary_expression "uVar18 == 8" identifier == number_literal) )) (compound_statement "{\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }" { (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);" do (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" identifier = (binary_expression "dVar3 / (double)DAT_002e814c" identifier / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" identifier = (binary_expression "dVar3 / (double)DAT_002e814c" identifier / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" identifier = (binary_expression "dVar3 / (double)DAT_002e814c" identifier / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }" { (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" identifier = (binary_expression "dVar3 / (double)DAT_002e814c" identifier / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" if (parenthesized_expression "((double)DAT_002e8150 <= dVar3)" ( (binary_expression "(double)DAT_002e8150 <= dVar3" (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              bVar15 = 0xff;\n            }" { (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" else (compound_statement "{\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" { (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) })) })) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9] + 4;" (assignment_expression "param_6 = param_6 + param_2[9] + 4" identifier = (binary_expression "param_6 + param_2[9] + 4" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != param_3)" ( (binary_expression "iVar19 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }" if (parenthesized_expression "(uVar18 == 10)" ( (binary_expression "uVar18 == 10" identifier == number_literal) )) (compound_statement "{\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }" { (if_statement "if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }" if (parenthesized_expression "(param_2[0xb] == 0)" ( (binary_expression "param_2[0xb] == 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }" { (if_statement "if (param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );" do (compound_statement "{\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);" do (compound_statement "{\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          }" { (expression_statement "iVar11 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (if_statement "if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" if (parenthesized_expression "(iVar14 == 2)" ( (binary_expression "iVar14 == 2" identifier == number_literal) )) (compound_statement "{\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" { (expression_statement "iVar11 = *(int *)(iVar11 + 0x20);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x20)" identifier = (pointer_expression "*(int *)(iVar11 + 0x20)" * (cast_expression "(int *)(iVar11 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x20)" ( (binary_expression "iVar11 + 0x20" identifier + number_literal) ))))) ;) (labeled_statement "LAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" statement_identifier : (expression_statement "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" (assignment_expression "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" identifier = (cast_expression "(float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" ( (binary_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff" (cast_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(*(double *)(param_5 + iVar11 * 8))" identifier (argument_list "(*(double *)(param_5 + iVar11 * 8))" ( (pointer_expression "*(double *)(param_5 + iVar11 * 8)" * (cast_expression "(double *)(param_5 + iVar11 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar11 * 8)" ( (binary_expression "param_5 + iVar11 * 8" identifier + (binary_expression "iVar11 * 8" identifier * number_literal)) )))) )))) & number_literal) )))) ;)) }) (else_clause "else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" else (if_statement "if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" if (parenthesized_expression "(iVar14 == 3)" ( (binary_expression "iVar14 == 3" identifier == number_literal) )) (compound_statement "{\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }" { (expression_statement "fVar1 = DAT_002df8a8;" (assignment_expression "fVar1 = DAT_002df8a8" identifier = identifier) ;) (if_statement "if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }" if (parenthesized_expression "(*(int *)(iVar11 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar11 + 0x34) != 0" (pointer_expression "*(int *)(iVar11 + 0x34)" * (cast_expression "(int *)(iVar11 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x34)" ( (binary_expression "iVar11 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }" { (expression_statement "iVar11 = *(int *)(iVar11 + 0x38);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x38)" identifier = (pointer_expression "*(int *)(iVar11 + 0x38)" * (cast_expression "(int *)(iVar11 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x38)" ( (binary_expression "iVar11 + 0x38" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_001644de;" goto statement_identifier ;) })) }) (else_clause "else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" else (compound_statement "{\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" { (if_statement "if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }" if (parenthesized_expression "(iVar14 == 1)" ( (binary_expression "iVar14 == 1" identifier == number_literal) )) (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }" { (expression_statement "iVar11 = *(int *)(iVar11 + 0x14);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x14)" identifier = (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }" else (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 8);\n              }" { (expression_statement "iVar11 = *(int *)(iVar11 + 8);" (assignment_expression "iVar11 = *(int *)(iVar11 + 8)" identifier = (pointer_expression "*(int *)(iVar11 + 8)" * (cast_expression "(int *)(iVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) ;) }))) (expression_statement "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" (assignment_expression "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" identifier = (cast_expression "(float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" ( (binary_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff" (cast_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(*(double *)(param_5 + iVar11 * 8))" identifier (argument_list "(*(double *)(param_5 + iVar11 * 8))" ( (pointer_expression "*(double *)(param_5 + iVar11 * 8)" * (cast_expression "(double *)(param_5 + iVar11 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar11 * 8)" ( (binary_expression "param_5 + iVar11 * 8" identifier + (binary_expression "iVar11 * 8" identifier * number_literal)) )))) )))) & number_literal) )))) ;) }))))) (expression_statement "uVar20 = (uint)(iVar14 + iVar19) % 3;" (assignment_expression "uVar20 = (uint)(iVar14 + iVar19) % 3" identifier = (binary_expression "(uint)(iVar14 + iVar19) % 3" (call_expression "(uint)(iVar14 + iVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 + iVar19)" ( (binary_expression "iVar14 + iVar19" identifier + identifier) ))) % number_literal)) ;) (if_statement "if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(uVar20 == 1)" ( (binary_expression "uVar20 == 1" identifier == number_literal) )) (compound_statement "{\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }" { (if_statement "if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  uVar18 = 0xfffff000;\n                }" { (expression_statement "uVar18 = 0xfffff000;" (assignment_expression "uVar18 = 0xfffff000" identifier = number_literal) ;) }) (else_clause "else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" else (compound_statement "{\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" else (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar18 = uVar18 | local_34 << 0xc;" (assignment_expression "uVar18 = uVar18 | local_34 << 0xc" identifier = (binary_expression "uVar18 | local_34 << 0xc" identifier | (binary_expression "local_34 << 0xc" identifier << number_literal))) ;) }))) })) }) (else_clause "else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" else (if_statement "if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(uVar20 == 2)" ( (binary_expression "uVar20 == 2" identifier == number_literal) )) (compound_statement "{\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }" { (if_statement "if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  uVar18 = 0xfffffffc;\n                }" { (expression_statement "uVar18 = 0xfffffffc;" (assignment_expression "uVar18 = 0xfffffffc" identifier = number_literal) ;) }) (else_clause "else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" else (compound_statement "{\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" else (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar18 = uVar18 | local_34 << 2;" (assignment_expression "uVar18 = uVar18 | local_34 << 2" identifier = (binary_expression "uVar18 | local_34 << 2" identifier | (binary_expression "local_34 << 2" identifier << number_literal))) ;) }))) })) (expression_statement "bVar13 = (byte)(uVar18 >> 8);" (assignment_expression "bVar13 = (byte)(uVar18 >> 8)" identifier = (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 8)" ( (binary_expression "uVar18 >> 8" identifier >> number_literal) )))) ;) (expression_statement "bVar15 = (byte)(uVar18 >> 0x10);" (assignment_expression "bVar15 = (byte)(uVar18 >> 0x10)" identifier = (call_expression "(byte)(uVar18 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 0x10)" ( (binary_expression "uVar18 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar18 >> 0x18);" (assignment_expression "local_a4 = (byte)(uVar18 >> 0x18)" identifier = (call_expression "(byte)(uVar18 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 0x18)" ( (binary_expression "uVar18 >> 0x18" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "*param_6 = (byte)uVar18;" (assignment_expression "*param_6 = (byte)uVar18" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = local_a4;" (assignment_expression "param_6[3] = local_a4" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) }) (else_clause "else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" else (compound_statement "{\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "param_6[3] = (byte)uVar18;" (assignment_expression "param_6[3] = (byte)uVar18" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "param_6[2] = bVar13;" (assignment_expression "param_6[2] = bVar13" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_6 = local_a4;" (assignment_expression "*param_6 = local_a4" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) }))) }) (else_clause "else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" else (if_statement "if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                uVar18 = uVar18 | 0xffc00000;\n              }" { (expression_statement "uVar18 = uVar18 | 0xffc00000;" (assignment_expression "uVar18 = uVar18 | 0xffc00000" identifier = (binary_expression "uVar18 | 0xffc00000" identifier | number_literal)) ;) }) (else_clause "else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" else (compound_statement "{\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" else (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar18 = uVar18 | local_34 << 0x16;" (assignment_expression "uVar18 = uVar18 | local_34 << 0x16" identifier = (binary_expression "uVar18 | local_34 << 0x16" identifier | (binary_expression "local_34 << 0x16" identifier << number_literal))) ;) }))) })))))) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 4)" ( (binary_expression "iVar14 != 4" identifier != number_literal) )) ;) (expression_statement "iVar19 = iVar19 + 4;" (assignment_expression "iVar19 = iVar19 + 4" identifier = (binary_expression "iVar19 + 4" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" identifier = (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ]))) ;) (if_statement "if (param_3 << 2 == iVar19) {\n            return;\n          }" if (parenthesized_expression "(param_3 << 2 == iVar19)" ( (binary_expression "param_3 << 2 == iVar19" (binary_expression "param_3 << 2" identifier << number_literal) == identifier) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }" if (parenthesized_expression "(param_2[1] == 0x20)" ( (binary_expression "param_2[1] == 0x20" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }" { (if_statement "if (param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = param_2[0x14];" (assignment_expression "uVar18 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "local_74 = 10;" (assignment_expression "local_74 = 10" identifier = number_literal) ;) (while_statement "while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" identifier + (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }" { (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) })) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" { (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" do (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" { (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" identifier = identifier) ;) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" if (parenthesized_expression "(uVar12 <= uVar18)" ( (binary_expression "uVar12 <= uVar18" identifier <= identifier) )) (compound_statement "{\n                uVar21 = uVar12;\n              }" { (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" identifier = (binary_expression "uVar12 - uVar21" identifier - identifier)) ;) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" identifier = (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" * (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" ( (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" identifier = (binary_expression "uVar18 - uVar21" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" identifier = (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x18)" ( (binary_expression "uVar20 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" identifier = (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x10)" ( (binary_expression "uVar20 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" identifier = (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 8)" ( (binary_expression "uVar20 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" { (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" else (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" { (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar12)" ( (binary_expression "0 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" { (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" do (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" { (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" identifier = identifier) ;) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" if (parenthesized_expression "(uVar12 <= uVar18)" ( (binary_expression "uVar12 <= uVar18" identifier <= identifier) )) (compound_statement "{\n                uVar21 = uVar12;\n              }" { (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" identifier = (binary_expression "uVar12 - uVar21" identifier - identifier)) ;) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" identifier = (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" * (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" ( (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" identifier = (binary_expression "uVar18 - uVar21" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" identifier = (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x18)" ( (binary_expression "uVar20 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" identifier = (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x10)" ( (binary_expression "uVar20 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" identifier = (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 8)" ( (binary_expression "uVar20 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" { (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" else (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" { (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar12)" ( (binary_expression "0 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x20) * 8" (pointer_expression "*(int *)(iVar19 + 0x20)" * (cast_expression "(int *)(iVar19 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x20)" ( (binary_expression "iVar19 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" { (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" do (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" { (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" identifier = identifier) ;) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" if (parenthesized_expression "(uVar12 <= uVar18)" ( (binary_expression "uVar12 <= uVar18" identifier <= identifier) )) (compound_statement "{\n                uVar21 = uVar12;\n              }" { (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" identifier = (binary_expression "uVar12 - uVar21" identifier - identifier)) ;) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" identifier = (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" * (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" ( (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" identifier = (binary_expression "uVar18 - uVar21" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" identifier = (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x18)" ( (binary_expression "uVar20 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" identifier = (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x10)" ( (binary_expression "uVar20 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" identifier = (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 8)" ( (binary_expression "uVar20 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" { (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" else (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" { (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar12)" ( (binary_expression "0 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (expression_statement "local_b4 = 0x3ff;" (assignment_expression "local_b4 = 0x3ff" identifier = number_literal) ;) (if_statement "if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }" if (parenthesized_expression "(*(int *)(iVar19 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar19 + 0x34) != 0" (pointer_expression "*(int *)(iVar19 + 0x34)" * (cast_expression "(int *)(iVar19 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x38) * 8" (pointer_expression "*(int *)(iVar19 + 0x38)" * (cast_expression "(int *)(iVar19 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x38)" ( (binary_expression "iVar19 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }" { (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" else (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) }) (else_clause "else {\n                local_b4 = 0xffffffff;\n              }" else (compound_statement "{\n                local_b4 = 0xffffffff;\n              }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }" { (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" identifier = identifier) ;) (while_statement "while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }" { (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" identifier = identifier) ;) (if_statement "if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }" if (parenthesized_expression "(local_74 <= uVar18)" ( (binary_expression "local_74 <= uVar18" identifier <= identifier) )) (compound_statement "{\n                uVar21 = local_74;\n              }" { (expression_statement "uVar21 = local_74;" (assignment_expression "uVar21 = local_74" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)local_74;" (assignment_expression "cVar6 = (char)local_74" identifier = (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_74 = local_74 - uVar21;" (assignment_expression "local_74 = local_74 - uVar21" identifier = (binary_expression "local_74 - uVar21" identifier - identifier)) ;) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" identifier = (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" * (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" ( (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" identifier = (binary_expression "uVar18 - uVar21" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10)" ( (binary_expression "local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)uVar12 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)uVar12 - cVar6 & 0x1fU)" ( (binary_expression "(char)uVar12 - cVar6 & 0x1fU" (binary_expression "(char)uVar12 - cVar6" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" identifier = (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x18)" ( (binary_expression "uVar20 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" identifier = (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x10)" ( (binary_expression "uVar20 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" identifier = (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 8)" ( (binary_expression "uVar20 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" { (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" else (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" { (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) })) (if_statement "if ((int)local_74 < 1) break;" if (parenthesized_expression "((int)local_74 < 1)" ( (binary_expression "(int)local_74 < 1" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = *param_2;" (assignment_expression "uVar12 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) })) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" identifier = (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ]))) ;) (if_statement "if (local_9c == param_3) break;" if (parenthesized_expression "(local_9c == param_3)" ( (binary_expression "local_9c == param_3" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (return_statement "return;" return ;) })) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = 10;" (assignment_expression "uVar18 = 10" identifier = number_literal) ;) (do_statement "do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );" do (compound_statement "{\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      }" { (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 8) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 8) * 8" identifier + (binary_expression "*(int *)(iVar14 + 8) * 8" (pointer_expression "*(int *)(iVar14 + 8)" * (cast_expression "(int *)(iVar14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          local_4c = 0;\n        }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" else (compound_statement "{\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" { (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n            local_4c = 0xffffffff;\n          }" { (expression_statement "local_4c = 0xffffffff;" (assignment_expression "local_4c = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" else (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" identifier = identifier) ;) }) (else_clause "else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" else (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" identifier = identifier) ;) }))) }))) }))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (if_statement "if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) (if_statement "if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x14) * 8" (pointer_expression "*(int *)(iVar14 + 0x14)" * (cast_expression "(int *)(iVar14 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00165390;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00165390;" goto statement_identifier ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" else (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" { (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" do (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          }" { (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n                uVar12 = uVar18;\n              }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar18 = uVar21;\n              }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n                *param_6 = 0;\n              }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15" identifier = (binary_expression "local_4c >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_4c >> bVar15" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar15" number_literal << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" { (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "0 >> ((byte)uVar18 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar15 = 0;\n              }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00165364;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00165364;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x14) * 8" (pointer_expression "*(int *)(iVar14 + 0x14)" * (cast_expression "(int *)(iVar14 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\nLAB_00165e72:\n            local_54 = 0;\n          }" { (labeled_statement "LAB_00165e72:\n            local_54 = 0;" statement_identifier : (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" { (labeled_statement "LAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;" statement_identifier : (if_statement "if (dVar3 <= 0.0) goto LAB_00165e72;" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (goto_statement "goto LAB_00165e72;" goto statement_identifier ;))) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_54 = 0xffffffff;\n            }" { (expression_statement "local_54 = 0xffffffff;" (assignment_expression "local_54 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" else (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_54 = local_34;" (assignment_expression "local_54 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_54 = local_34;" (assignment_expression "local_54 = local_34" identifier = identifier) ;) }))) }))) }))) (if_statement "if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) }))) (if_statement "if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x20) * 8" (pointer_expression "*(int *)(iVar14 + 0x20)" * (cast_expression "(int *)(iVar14 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00165520;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00165520;" goto statement_identifier ;)) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" else (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" { (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" do (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          }" { (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n                uVar12 = uVar18;\n              }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar18 = uVar21;\n              }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n                *param_6 = 0;\n              }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15" identifier = (binary_expression "local_54 >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_54 >> bVar15" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar15" number_literal << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" { (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "0 >> ((byte)uVar18 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar15 = 0;\n              }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_001654f4;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_001654f4;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x20) * 8" (pointer_expression "*(int *)(iVar14 + 0x20)" * (cast_expression "(int *)(iVar14 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\nLAB_00165e52:\n            local_5c = 0;\n          }" { (labeled_statement "LAB_00165e52:\n            local_5c = 0;" statement_identifier : (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" { (labeled_statement "LAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;" statement_identifier : (if_statement "if (dVar3 <= 0.0) goto LAB_00165e52;" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (goto_statement "goto LAB_00165e52;" goto statement_identifier ;))) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_5c = 0xffffffff;\n            }" { (expression_statement "local_5c = 0xffffffff;" (assignment_expression "local_5c = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" else (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_5c = local_34;" (assignment_expression "local_5c = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_5c = local_34;" (assignment_expression "local_5c = local_34" identifier = identifier) ;) }))) }))) }))) (if_statement "if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) }))) (if_statement "if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }" if (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }" { (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" do (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          }" { (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n                uVar12 = uVar18;\n              }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar18 = uVar21;\n              }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n                *param_6 = 0;\n              }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15" identifier = (binary_expression "local_5c >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_5c >> bVar15" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar15" number_literal << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" { (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "0 >> ((byte)uVar18 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar15 = 0;\n              }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00165684;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00165684;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (if_statement "if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" if (parenthesized_expression "(*(int *)(iVar14 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar14 + 0x34) == 0" (pointer_expression "*(int *)(iVar14 + 0x34)" * (cast_expression "(int *)(iVar14 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x34)" ( (binary_expression "iVar14 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          local_44 = 0x3ff;\n        }" { (expression_statement "local_44 = 0x3ff;" (assignment_expression "local_44 = 0x3ff" identifier = number_literal) ;) }) (else_clause "else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" else (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x38) * 8" (pointer_expression "*(int *)(iVar14 + 0x38)" * (cast_expression "(int *)(iVar14 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x38)" ( (binary_expression "iVar14 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n            local_44 = 0;\n          }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" else (compound_statement "{\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" { (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_44 = local_34;" (assignment_expression "local_44 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_44 = local_34;" (assignment_expression "local_44 = local_34" identifier = identifier) ;) }))) }) (else_clause "else {\n              local_44 = 0xffffffff;\n            }" else (compound_statement "{\n              local_44 = 0xffffffff;\n            }" { (expression_statement "local_44 = 0xffffffff;" (assignment_expression "local_44 = 0xffffffff" identifier = number_literal) ;) }))) }))) }))) (if_statement "if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) (if_statement "if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }" if (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }" { (while_statement "while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n              uVar12 = uVar18;\n            }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar18 = uVar21;\n            }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n              *param_6 = 0;\n            }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n              *param_6 = 0;\n            }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15" identifier = (binary_expression "local_44 >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_44 >> bVar15" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar15" number_literal << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }" { (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "0 >> ((byte)uVar18 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              bVar15 = 0;\n            }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }" { (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((int)uVar21 < 1) break;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) })) })) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" identifier = (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ]))) ;) (if_statement "if (iVar19 == param_3) {\n          return;\n        }" if (parenthesized_expression "(iVar19 == param_3)" ( (binary_expression "iVar19 == param_3" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_001642d0:\n    local_7c = 0;" statement_identifier : (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;)) (expression_statement "iStack_78 = 0;" (assignment_expression "iStack_78 = 0" identifier = number_literal) ;) (if_statement "if (uVar18 == 0) goto LAB_00163bfb;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00163bfb;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" else (compound_statement "{\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" { (if_statement "if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(uVar18 == 0x20)" ( (binary_expression "uVar18 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }" { (if_statement "if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }" { (if_statement "if (param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);" do (compound_statement "{\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        }" { (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" identifier = (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) * (cast_expression "(float)*(double *)(param_2 + 0x11)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) )))))) + (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))))) ;) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" identifier = (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }" { (expression_statement "*param_6 = SUB41(fVar4,0);" (assignment_expression "*param_6 = SUB41(fVar4,0)" (pointer_expression "*param_6" * identifier) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = bVar9;" (assignment_expression "param_6[2] = bVar9" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" { (expression_statement "param_6[1] = bVar9;" (assignment_expression "param_6[1] = bVar9" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_6 = bVar13;" (assignment_expression "*param_6 = bVar13" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = SUB41(fVar4,0);" (assignment_expression "param_6[3] = SUB41(fVar4,0)" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" identifier = (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) * (cast_expression "(float)*(double *)(param_2 + 0x11)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) )))))) + (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))))) ;) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" identifier = (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }" { (expression_statement "param_6[4] = SUB41(fVar4,0);" (assignment_expression "param_6[4] = SUB41(fVar4,0)" (subscript_expression "param_6[4]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[6] = bVar9;" (assignment_expression "param_6[6] = bVar9" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[5] = bVar15;" (assignment_expression "param_6[5] = bVar15" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = bVar13;" (assignment_expression "param_6[7] = bVar13" (subscript_expression "param_6[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" { (expression_statement "param_6[5] = bVar9;" (assignment_expression "param_6[5] = bVar9" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[4] = bVar13;" (assignment_expression "param_6[4] = bVar13" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[6] = bVar15;" (assignment_expression "param_6[6] = bVar15" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = SUB41(fVar4,0);" (assignment_expression "param_6[7] = SUB41(fVar4,0)" (subscript_expression "param_6[7]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" identifier = (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) * (cast_expression "(float)*(double *)(param_2 + 0x11)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) )))))) + (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))))) ;) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" identifier = (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }" { (expression_statement "param_6[8] = SUB41(fVar4,0);" (assignment_expression "param_6[8] = SUB41(fVar4,0)" (subscript_expression "param_6[8]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[10] = bVar13;" (assignment_expression "param_6[10] = bVar13" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = bVar15;" (assignment_expression "param_6[9] = bVar15" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = bVar9;" (assignment_expression "param_6[0xb] = bVar9" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" { (expression_statement "param_6[10] = bVar15;" (assignment_expression "param_6[10] = bVar15" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[8] = bVar9;" (assignment_expression "param_6[8] = bVar9" (subscript_expression "param_6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = bVar13;" (assignment_expression "param_6[9] = bVar13" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = SUB41(fVar4,0);" (assignment_expression "param_6[0xb] = SUB41(fVar4,0)" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = fVar1;" (assignment_expression "fVar4 = fVar1" identifier = identifier) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }" { (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))))) ;) })) (expression_statement "fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" identifier = (binary_expression "fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "fVar4 * (float)*(double *)(param_2 + 0x11)" identifier * (cast_expression "(float)*(double *)(param_2 + 0x11)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) )))))) + (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))))) ;) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" identifier = (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "fVar22 = (float)((uint)fVar4 >> 0x18);" (assignment_expression "fVar22 = (float)((uint)fVar4 >> 0x18)" identifier = (cast_expression "(float)((uint)fVar4 >> 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }" { (expression_statement "param_6[0xc] = SUB41(fVar4,0);" (assignment_expression "param_6[0xc] = SUB41(fVar4,0)" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0xe] = bVar13;" (assignment_expression "param_6[0xe] = bVar13" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xd] = bVar15;" (assignment_expression "param_6[0xd] = bVar15" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" else (compound_statement "{\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" { (expression_statement "param_6[0xe] = bVar15;" (assignment_expression "param_6[0xe] = bVar15" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xc] = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "param_6[0xc] = (byte)((uint)fVar4 >> 0x18)" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "param_6[0xd] = bVar13;" (assignment_expression "param_6[0xd] = bVar13" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "fVar22 = fVar4;" (assignment_expression "fVar22 = fVar4" identifier = identifier) ;) }))) (expression_statement "param_6[0xf] = SUB41(fVar22,0);" (assignment_expression "param_6[0xf] = SUB41(fVar22,0)" (subscript_expression "param_6[0xf]" identifier [ number_literal ]) = (call_expression "SUB41(fVar22,0)" identifier (argument_list "(fVar22,0)" ( identifier , number_literal )))) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9] + 0x10;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x10" identifier = (binary_expression "param_6 + param_2[9] + 0x10" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) }) while (parenthesized_expression "(local_b4 != param_3)" ( (binary_expression "local_b4 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );" do (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if (param_2[0x10] == 1) goto LAB_00164d14;" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00164d14;" goto statement_identifier ;)) (labeled_statement "LAB_00164af3:\n          param_6[1] = bVar9;" statement_identifier : (expression_statement "param_6[1] = bVar9;" (assignment_expression "param_6[1] = bVar9" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "*param_6 = bVar8;" (assignment_expression "*param_6 = bVar8" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[2] = bVar17;" (assignment_expression "param_6[2] = bVar17" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)local_34;" (assignment_expression "param_6[3] = (byte)local_34" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" else (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" { (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" identifier = (binary_expression "dVar3 * (double)DAT_002e8148" identifier * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(dVar5 <= dVar3)" ( (binary_expression "dVar5 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) (expression_statement "bVar9 = 0xff;" (assignment_expression "bVar9 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(byte)lVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar9 = (byte)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = bVar17;" (assignment_expression "bVar13 = bVar17" identifier = identifier) ;) (if_statement "if (param_2[0x10] != 1) goto LAB_00164af3;" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00164af3;" goto statement_identifier ;)) (labeled_statement "LAB_00164d14:\n          *param_6 = bVar15;" statement_identifier : (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;)) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = bVar9;" (assignment_expression "param_6[2] = bVar9" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = bVar8;" (assignment_expression "param_6[3] = bVar8" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if (param_2[0x10] == 1) goto LAB_00164ce4;" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00164ce4;" goto statement_identifier ;)) (labeled_statement "LAB_00164b98:\n          param_6[4] = bVar17;" statement_identifier : (expression_statement "param_6[4] = bVar17;" (assignment_expression "param_6[4] = bVar17" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[5] = bVar8;" (assignment_expression "param_6[5] = bVar8" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[6] = bVar16;" (assignment_expression "param_6[6] = bVar16" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = (byte)local_34;" (assignment_expression "param_6[7] = (byte)local_34" (subscript_expression "param_6[7]" identifier [ number_literal ]) = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" else (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" { (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" identifier = (binary_expression "dVar3 * (double)DAT_002e8148" identifier * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" identifier = number_literal) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(byte)lVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar16 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar16 = (byte)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = bVar17;" (assignment_expression "bVar13 = bVar17" identifier = identifier) ;) (expression_statement "bVar9 = bVar16;" (assignment_expression "bVar9 = bVar16" identifier = identifier) ;) (if_statement "if (param_2[0x10] != 1) goto LAB_00164b98;" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00164b98;" goto statement_identifier ;)) (labeled_statement "LAB_00164ce4:\n          param_6[4] = bVar15;" statement_identifier : (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[5] = bVar9;" (assignment_expression "param_6[5] = bVar9" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[6] = bVar8;" (assignment_expression "param_6[6] = bVar8" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = bVar13;" (assignment_expression "param_6[7] = bVar13" (subscript_expression "param_6[7]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if (param_2[0x10] == 1) goto LAB_00164cb8;" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00164cb8;" goto statement_identifier ;)) (labeled_statement "LAB_00164c3f:\n          param_6[10] = bVar16;" statement_identifier : (expression_statement "param_6[10] = bVar16;" (assignment_expression "param_6[10] = bVar16" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[8] = bVar17;" (assignment_expression "param_6[8] = bVar17" (subscript_expression "param_6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = bVar8;" (assignment_expression "param_6[9] = bVar8" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = (byte)local_34;" (assignment_expression "param_6[0xb] = (byte)local_34" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" else (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" { (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" identifier = (binary_expression "dVar3 * (double)DAT_002e8148" identifier * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" identifier = number_literal) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(byte)lVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar16 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar16 = (byte)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = bVar16;" (assignment_expression "bVar13 = bVar16" identifier = identifier) ;) (expression_statement "bVar9 = bVar17;" (assignment_expression "bVar9 = bVar17" identifier = identifier) ;) (if_statement "if (param_2[0x10] != 1) goto LAB_00164c3f;" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00164c3f;" goto statement_identifier ;)) (labeled_statement "LAB_00164cb8:\n          param_6[8] = bVar15;" statement_identifier : (expression_statement "param_6[8] = bVar15;" (assignment_expression "param_6[8] = bVar15" (subscript_expression "param_6[8]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[9] = bVar13;" (assignment_expression "param_6[9] = bVar13" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[10] = bVar8;" (assignment_expression "param_6[10] = bVar8" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = bVar9;" (assignment_expression "param_6[0xb] = bVar9" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }" { (labeled_statement "LAB_00164c70:\n          local_34._0_1_ = 0xff;" statement_identifier : (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;)) (expression_statement "bVar9 = 0xff;" (assignment_expression "bVar9 = 0xff" identifier = number_literal) ;) (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = (byte)local_34;" (assignment_expression "bVar8 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" identifier = number_literal) ;) (if_statement "if (param_2[0x10] != 1) goto LAB_00164a1f;" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00164a1f;" goto statement_identifier ;)) (labeled_statement "LAB_00164c8e:\n          bVar8 = bVar15;" statement_identifier : (expression_statement "bVar8 = bVar15;" (assignment_expression "bVar8 = bVar15" identifier = identifier) ;)) (expression_statement "param_6[0xc] = (byte)local_34;" (assignment_expression "param_6[0xc] = (byte)local_34" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0xd] = bVar9;" (assignment_expression "param_6[0xd] = bVar9" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xe] = bVar17;" (assignment_expression "param_6[0xe] = bVar17" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" else (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }" { (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" identifier = (binary_expression "dVar3 * (double)DAT_002e8148" identifier * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) goto LAB_00164c70;" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (goto_statement "goto LAB_00164c70;" goto statement_identifier ;)) (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(byte)lVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar15 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar15 = (byte)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar13 = (byte)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar9 = (byte)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "bVar8 = (byte)local_34;" (assignment_expression "bVar8 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar17 = bVar13;" (assignment_expression "bVar17 = bVar13" identifier = identifier) ;) (expression_statement "bVar16 = bVar9;" (assignment_expression "bVar16 = bVar9" identifier = identifier) ;) (if_statement "if (param_2[0x10] == 1) goto LAB_00164c8e;" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00164c8e;" goto statement_identifier ;)) (labeled_statement "LAB_00164a1f:\n          param_6[0xd] = bVar13;" statement_identifier : (expression_statement "param_6[0xd] = bVar13;" (assignment_expression "param_6[0xd] = bVar13" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[0xc] = bVar15;" (assignment_expression "param_6[0xc] = bVar15" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xe] = bVar16;" (assignment_expression "param_6[0xe] = bVar16" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "param_6[0xf] = bVar8;" (assignment_expression "param_6[0xf] = bVar8" (subscript_expression "param_6[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9] + 0x10;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x10" identifier = (binary_expression "param_6 + param_2[9] + 0x10" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) (if_statement "if (local_b4 == param_3) {\n          return;\n        }" if (parenthesized_expression "(local_b4 == param_3)" ( (binary_expression "local_b4 == param_3" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (uVar18 != 0x40) goto LAB_001642d0;" if (parenthesized_expression "(uVar18 != 0x40)" ( (binary_expression "uVar18 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_001642d0;" goto statement_identifier ;)) (if_statement "if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = (double)DAT_002df8a8;" (assignment_expression "dVar3 = (double)DAT_002df8a8" identifier = (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);" do (compound_statement "{\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      }" { (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" identifier = (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) * (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) ))))) + (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) ;) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }" { (expression_statement "*param_6 = SUB81(dVar5,0);" (assignment_expression "*param_6 = SUB81(dVar5,0)" (pointer_expression "*param_6" * identifier) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[4] = bVar13;" (assignment_expression "param_6[4] = bVar13" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[5] = bVar15;" (assignment_expression "param_6[5] = bVar15" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_8c;" (assignment_expression "param_6[2] = local_8c" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = local_94;" (assignment_expression "param_6[3] = local_94" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[6] = (byte)local_9c;" (assignment_expression "param_6[6] = (byte)local_9c" (subscript_expression "param_6[6]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[7] = local_a4;" (assignment_expression "param_6[7] = local_a4" (subscript_expression "param_6[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" else (compound_statement "{\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" { (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = SUB81(dVar5,0);" (assignment_expression "param_6[7] = SUB81(dVar5,0)" (subscript_expression "param_6[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[4] = local_94;" (assignment_expression "param_6[4] = local_94" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_6 = local_a4;" (assignment_expression "*param_6 = local_a4" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[5] = local_8c;" (assignment_expression "param_6[5] = local_8c" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = (byte)local_9c;" (assignment_expression "param_6[1] = (byte)local_9c" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[6] = local_ac;" (assignment_expression "param_6[6] = local_ac" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" identifier = (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) * (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) ))))) + (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) ;) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }" { (expression_statement "param_6[8] = SUB81(dVar5,0);" (assignment_expression "param_6[8] = SUB81(dVar5,0)" (subscript_expression "param_6[8]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0xc] = bVar13;" (assignment_expression "param_6[0xc] = bVar13" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xd] = bVar15;" (assignment_expression "param_6[0xd] = bVar15" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = local_ac;" (assignment_expression "param_6[9] = local_ac" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[10] = local_8c;" (assignment_expression "param_6[10] = local_8c" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = local_94;" (assignment_expression "param_6[0xb] = local_94" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xe] = (byte)local_9c;" (assignment_expression "param_6[0xe] = (byte)local_9c" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0xf] = local_a4;" (assignment_expression "param_6[0xf] = local_a4" (subscript_expression "param_6[0xf]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" else (compound_statement "{\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" { (expression_statement "param_6[10] = bVar15;" (assignment_expression "param_6[10] = bVar15" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = bVar13;" (assignment_expression "param_6[0xb] = bVar13" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xf] = SUB81(dVar5,0);" (assignment_expression "param_6[0xf] = SUB81(dVar5,0)" (subscript_expression "param_6[0xf]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0xc] = local_94;" (assignment_expression "param_6[0xc] = local_94" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[8] = local_a4;" (assignment_expression "param_6[8] = local_a4" (subscript_expression "param_6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xd] = local_8c;" (assignment_expression "param_6[0xd] = local_8c" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = (byte)local_9c;" (assignment_expression "param_6[9] = (byte)local_9c" (subscript_expression "param_6[9]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0xe] = local_ac;" (assignment_expression "param_6[0xe] = local_ac" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" identifier = (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) * (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) ))))) + (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) ;) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }" { (expression_statement "param_6[0x10] = SUB81(dVar5,0);" (assignment_expression "param_6[0x10] = SUB81(dVar5,0)" (subscript_expression "param_6[0x10]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0x14] = bVar15;" (assignment_expression "param_6[0x14] = bVar15" (subscript_expression "param_6[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x11] = local_ac;" (assignment_expression "param_6[0x11] = local_ac" (subscript_expression "param_6[0x11]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x12] = local_8c;" (assignment_expression "param_6[0x12] = local_8c" (subscript_expression "param_6[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x13] = local_94;" (assignment_expression "param_6[0x13] = local_94" (subscript_expression "param_6[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x15] = bVar13;" (assignment_expression "param_6[0x15] = bVar13" (subscript_expression "param_6[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x16] = (byte)local_9c;" (assignment_expression "param_6[0x16] = (byte)local_9c" (subscript_expression "param_6[0x16]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0x17] = local_a4;" (assignment_expression "param_6[0x17] = local_a4" (subscript_expression "param_6[0x17]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" else (compound_statement "{\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" { (expression_statement "param_6[0x13] = bVar15;" (assignment_expression "param_6[0x13] = bVar15" (subscript_expression "param_6[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x17] = SUB81(dVar5,0);" (assignment_expression "param_6[0x17] = SUB81(dVar5,0)" (subscript_expression "param_6[0x17]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0x10] = local_a4;" (assignment_expression "param_6[0x10] = local_a4" (subscript_expression "param_6[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x11] = (byte)local_9c;" (assignment_expression "param_6[0x11] = (byte)local_9c" (subscript_expression "param_6[0x11]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0x12] = bVar13;" (assignment_expression "param_6[0x12] = bVar13" (subscript_expression "param_6[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x14] = local_94;" (assignment_expression "param_6[0x14] = local_94" (subscript_expression "param_6[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x15] = local_8c;" (assignment_expression "param_6[0x15] = local_8c" (subscript_expression "param_6[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x16] = local_ac;" (assignment_expression "param_6[0x16] = local_ac" (subscript_expression "param_6[0x16]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = dVar3;" (assignment_expression "dVar5 = dVar3" identifier = identifier) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }" { (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" identifier = (binary_expression "dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "dVar5 * *(double *)(param_2 + 0x11)" identifier * (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) ))))) + (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = SUB81(dVar5,0);" (assignment_expression "local_ac = SUB81(dVar5,0)" identifier = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "bVar15 = local_ac;" (assignment_expression "bVar15 = local_ac" identifier = identifier) ;) (expression_statement "bVar9 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar9 = (byte)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar8 = (byte)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }" { (expression_statement "param_6[0x18] = bVar15;" (assignment_expression "param_6[0x18] = bVar15" (subscript_expression "param_6[0x18]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1c] = bVar9;" (assignment_expression "param_6[0x1c] = bVar9" (subscript_expression "param_6[0x1c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x19] = local_ac;" (assignment_expression "param_6[0x19] = local_ac" (subscript_expression "param_6[0x19]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1a] = local_8c;" (assignment_expression "param_6[0x1a] = local_8c" (subscript_expression "param_6[0x1a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1b] = local_94;" (assignment_expression "param_6[0x1b] = local_94" (subscript_expression "param_6[0x1b]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1d] = bVar8;" (assignment_expression "param_6[0x1d] = bVar8" (subscript_expression "param_6[0x1d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1e] = (byte)local_9c;" (assignment_expression "param_6[0x1e] = (byte)local_9c" (subscript_expression "param_6[0x1e]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" else (compound_statement "{\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" { (expression_statement "param_6[0x1b] = bVar9;" (assignment_expression "param_6[0x1b] = bVar9" (subscript_expression "param_6[0x1b]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x18] = bVar13;" (assignment_expression "param_6[0x18] = bVar13" (subscript_expression "param_6[0x18]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x19] = (byte)local_9c;" (assignment_expression "param_6[0x19] = (byte)local_9c" (subscript_expression "param_6[0x19]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0x1a] = bVar8;" (assignment_expression "param_6[0x1a] = bVar8" (subscript_expression "param_6[0x1a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1c] = local_94;" (assignment_expression "param_6[0x1c] = local_94" (subscript_expression "param_6[0x1c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1d] = local_8c;" (assignment_expression "param_6[0x1d] = local_8c" (subscript_expression "param_6[0x1d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1e] = local_ac;" (assignment_expression "param_6[0x1e] = local_ac" (subscript_expression "param_6[0x1e]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" identifier = identifier) ;) }))) (expression_statement "param_6[0x1f] = bVar13;" (assignment_expression "param_6[0x1f] = bVar13" (subscript_expression "param_6[0x1f]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9] + 0x20;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x20" identifier = (binary_expression "param_6 + param_2[9] + 0x20" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) }) while (parenthesized_expression "(local_b4 != param_3)" ( (binary_expression "local_b4 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) }))) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (if_statement "if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }" if (parenthesized_expression "(uVar18 < 0x41)" ( (binary_expression "uVar18 < 0x41" identifier < number_literal) )) (compound_statement "{\n    uVar20 = uVar18;\n  }" { (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" identifier = identifier) ;) })) (expression_statement "bVar13 = (byte)(uVar20 - 1);" (assignment_expression "bVar13 = (byte)(uVar20 - 1)" identifier = (call_expression "(byte)(uVar20 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 - 1)" ( (binary_expression "uVar20 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar15 = bVar13 & 0x1f;" (assignment_expression "bVar15 = bVar13 & 0x1f" identifier = (binary_expression "bVar13 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar10 = 2 << (bVar13 & 0x1f);" (assignment_expression "uVar10 = 2 << (bVar13 & 0x1f)" identifier = (binary_expression "2 << (bVar13 & 0x1f)" number_literal << (parenthesized_expression "(bVar13 & 0x1f)" ( (binary_expression "bVar13 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar21 = uVar10;" (assignment_expression "uVar21 = uVar10" identifier = identifier) ;) (expression_statement "uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;" (assignment_expression "uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15" identifier = (binary_expression "0 << bVar15 | 2U >> 0x20 - bVar15" (binary_expression "0 << bVar15" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar15" number_literal >> (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }" if (parenthesized_expression "((uVar20 - 1 & 0x20) != 0)" ( (binary_expression "(uVar20 - 1 & 0x20) != 0" (parenthesized_expression "(uVar20 - 1 & 0x20)" ( (binary_expression "uVar20 - 1 & 0x20" (binary_expression "uVar20 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) })) (expression_statement "local_7c = uVar21 - 1;" (assignment_expression "local_7c = uVar21 - 1" identifier = (binary_expression "uVar21 - 1" identifier - number_literal)) ;) (expression_statement "iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);" (assignment_expression "iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0)" identifier = (binary_expression "(uVar12 - 1) + (uint)(uVar21 != 0)" (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar21 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) ))))) ;) (labeled_statement "LAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }" statement_identifier : (if_statement "if (param_3 < 1) {\n    return;\n  }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (do_statement "do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );" do (compound_statement "{\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x20) * 8" (pointer_expression "*(int *)(iVar19 + 0x20)" * (cast_expression "(int *)(iVar19 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x20)" ( (binary_expression "iVar19 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" else (compound_statement "{\n          local_84 = (longlong)ROUND(dVar3);\n        }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (if_statement "if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) (if_statement "if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00163e10;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00163e10;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" { (do_statement "do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" do (compound_statement "{\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      }" { (while_statement "while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar18;\n          }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar18 = uVar21;\n          }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_6 = 0;\n          }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" identifier = (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" { (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar15 = 0;\n          }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00163de4;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00163de4;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\n        local_84 = 0;\n      }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00163e10:\n        local_84 = 0;" statement_identifier : (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;)) (if_statement "if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" else (compound_statement "{\n              local_84 = (longlong)ROUND(dVar3);\n            }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) }))) (if_statement "if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) }))) (if_statement "if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" identifier + (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00163fd8;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00163fd8;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" { (do_statement "do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" do (compound_statement "{\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      }" { (while_statement "while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar18;\n          }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar18 = uVar21;\n          }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_6 = 0;\n          }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" identifier = (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" { (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar15 = 0;\n          }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00163fac;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00163fac;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" identifier + (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\n        local_84 = 0;\n      }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00163fd8:\n        local_84 = 0;" statement_identifier : (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;)) (if_statement "if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" else (compound_statement "{\n              local_84 = (longlong)ROUND(dVar3);\n            }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) }))) (if_statement "if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) }))) (if_statement "if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }" if (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }" { (do_statement "do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" do (compound_statement "{\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      }" { (while_statement "while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) (if_statement "if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }" if (parenthesized_expression "(uVar20 <= uVar18)" ( (binary_expression "uVar20 <= uVar18" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar20;\n          }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar18 = uVar21;\n          }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_6 = 0;\n          }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" identifier = (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" { (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar15 = 0;\n          }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00164174;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00164174;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (if_statement "if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" if (parenthesized_expression "(*(int *)(iVar19 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar19 + 0x34) == 0" (pointer_expression "*(int *)(iVar19 + 0x34)" * (cast_expression "(int *)(iVar19 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" { (expression_statement "dVar3 = (double)DAT_002df8a8;" (assignment_expression "dVar3 = (double)DAT_002df8a8" identifier = (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);" statement_identifier : (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;)) (if_statement "if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" else (compound_statement "{\n          local_84 = (longlong)ROUND(dVar3);\n        }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) }) (else_clause "else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" else (compound_statement "{\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x38) * 8" (pointer_expression "*(int *)(iVar19 + 0x38)" * (cast_expression "(int *)(iVar19 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x38)" ( (binary_expression "iVar19 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) goto LAB_00164302;" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (goto_statement "goto LAB_00164302;" goto statement_identifier ;)) }))) (if_statement "if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) (if_statement "if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }" if (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }" { (while_statement "while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n          uVar12 = uVar18;\n        }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar18 = uVar21;\n        }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n          *param_6 = 0;\n        }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n          *param_6 = 0;\n        }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" identifier = (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }" { (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          bVar15 = 0;\n        }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }" { (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((int)uVar21 < 1) break;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) })) })) (expression_statement "local_6c = local_6c + 1;" (assignment_expression "local_6c = local_6c + 1" identifier = (binary_expression "local_6c + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" identifier = (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ]))) ;) (if_statement "if (local_6c == param_3) {\n      return;\n    }" if (parenthesized_expression "(local_6c == param_3)" ( (binary_expression "local_6c == param_3" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n\nvoid __regparm2\nExportBGRAQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,\n                 uchar *q,ExceptionInfo *exception)\n\n{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  uchar uVar8;\n  uchar uVar9;\n  ushort uVar10;\n  ushort uVar11;\n  ushort uVar12;\n  uint uVar13;\n  uint uVar14;\n  ssize_t sVar15;\n  byte bVar16;\n  int iVar17;\n  uchar uVar18;\n  PixelChannelMap *pPVar19;\n  byte bVar20;\n  uchar uVar21;\n  uchar uVar22;\n  uchar uVar23;\n  uint uVar24;\n  size_t sVar25;\n  int iVar26;\n  uint uVar27;\n  uint uVar28;\n  float fVar29;\n  uint local_b4;\n  uchar local_ac;\n  uchar local_a4;\n  int local_9c;\n  uchar local_94;\n  uchar local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar24 = quantum_info->depth;\n  if (uVar24 == 0x10) {\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n    if ((int)number_pixels < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = p[image->channel_map[2].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = uVar21;\n      uVar9 = (uchar)iVar26;\n      if (quantum_info->endian != LSBEndian) {\n        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\n      }\n      q[1] = uVar18;\n      *q = uVar9;\n      dVar3 = p[image->channel_map[1].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[3] = uVar18;\n      q[2] = uVar21;\n      dVar3 = p[image->channel_map->offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[5] = uVar18;\n      q[4] = uVar21;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }\n      uVar21 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\n      }\n      q[7] = uVar21;\n      local_b4 = local_b4 + 1;\n      q[6] = local_ac;\n      q = q + quantum_info->pad + 8;\n      p = p + image->number_channels;\n      if (local_b4 == (int)number_pixels) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar24 < 0x11) {\n    if (uVar24 == 8) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      iVar26 = 0;\n      do {\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      } while (iVar26 != (int)number_pixels);\n      return;\n    }\n    if (uVar24 == 10) {\n      if (quantum_info->pack == MagickFalse) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }\n      if (quantum_info->quantum == 0x20) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }\n      iVar26 = 0;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      sVar25 = 10;\n      do {\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar24 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar24 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar24 != 0x40) goto LAB_001642d0;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n  }\n  uVar27 = 0;\n  if (uVar24 < 0x41) {\n    uVar27 = uVar24;\n  }\n  bVar16 = (byte)(uVar27 - 1);\n  bVar20 = bVar16 & 0x1f;\n  uVar13 = 2 << (bVar16 & 0x1f);\n  uVar14 = uVar13;\n  uVar28 = 0 << bVar20 | 2U >> 0x20 - bVar20;\n  if ((uVar27 - 1 & 0x20) != 0) {\n    uVar14 = 0;\n    uVar28 = uVar13;\n  }\n  local_7c = uVar14 - 1;\n  iStack_78 = (uVar28 - 1) + (uint)(uVar14 != 0);\nLAB_00163bfb:\n  if ((int)number_pixels < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    pPVar19 = image->channel_map;\n    if (0.0 < p[pPVar19[2].offset]) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar27 = (quantum_info->state).bits;\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19[1].offset];\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163de4:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19[1].offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19->offset];\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163fac:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19->offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if (0 < (int)uVar24) {\n      do {\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00164174:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n    }\n    if (pPVar19[4].traits == UndefinedPixelTrait) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = p[pPVar19[4].offset];\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if (0 < (int)uVar24) {\n      while( true ) {\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }\n    }\n    local_6c = local_6c + 1;\n    p = p + image->number_channels;\n    q = q + quantum_info->pad;\n    if (local_6c == (int)number_pixels) {\n      return;\n    }\n    uVar24 = quantum_info->depth;\n  } while( true );\n}\n\n" comment comment comment comment comment comment comment (function_definition "void __regparm2\nExportBGRAQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,\n                 uchar *q,ExceptionInfo *exception)\n\n{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  uchar uVar8;\n  uchar uVar9;\n  ushort uVar10;\n  ushort uVar11;\n  ushort uVar12;\n  uint uVar13;\n  uint uVar14;\n  ssize_t sVar15;\n  byte bVar16;\n  int iVar17;\n  uchar uVar18;\n  PixelChannelMap *pPVar19;\n  byte bVar20;\n  uchar uVar21;\n  uchar uVar22;\n  uchar uVar23;\n  uint uVar24;\n  size_t sVar25;\n  int iVar26;\n  uint uVar27;\n  uint uVar28;\n  float fVar29;\n  uint local_b4;\n  uchar local_ac;\n  uchar local_a4;\n  int local_9c;\n  uchar local_94;\n  uchar local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar24 = quantum_info->depth;\n  if (uVar24 == 0x10) {\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n    if ((int)number_pixels < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = p[image->channel_map[2].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = uVar21;\n      uVar9 = (uchar)iVar26;\n      if (quantum_info->endian != LSBEndian) {\n        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\n      }\n      q[1] = uVar18;\n      *q = uVar9;\n      dVar3 = p[image->channel_map[1].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[3] = uVar18;\n      q[2] = uVar21;\n      dVar3 = p[image->channel_map->offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[5] = uVar18;\n      q[4] = uVar21;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }\n      uVar21 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\n      }\n      q[7] = uVar21;\n      local_b4 = local_b4 + 1;\n      q[6] = local_ac;\n      q = q + quantum_info->pad + 8;\n      p = p + image->number_channels;\n      if (local_b4 == (int)number_pixels) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar24 < 0x11) {\n    if (uVar24 == 8) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      iVar26 = 0;\n      do {\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      } while (iVar26 != (int)number_pixels);\n      return;\n    }\n    if (uVar24 == 10) {\n      if (quantum_info->pack == MagickFalse) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }\n      if (quantum_info->quantum == 0x20) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }\n      iVar26 = 0;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      sVar25 = 10;\n      do {\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar24 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar24 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar24 != 0x40) goto LAB_001642d0;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n  }\n  uVar27 = 0;\n  if (uVar24 < 0x41) {\n    uVar27 = uVar24;\n  }\n  bVar16 = (byte)(uVar27 - 1);\n  bVar20 = bVar16 & 0x1f;\n  uVar13 = 2 << (bVar16 & 0x1f);\n  uVar14 = uVar13;\n  uVar28 = 0 << bVar20 | 2U >> 0x20 - bVar20;\n  if ((uVar27 - 1 & 0x20) != 0) {\n    uVar14 = 0;\n    uVar28 = uVar13;\n  }\n  local_7c = uVar14 - 1;\n  iStack_78 = (uVar28 - 1) + (uint)(uVar14 != 0);\nLAB_00163bfb:\n  if ((int)number_pixels < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    pPVar19 = image->channel_map;\n    if (0.0 < p[pPVar19[2].offset]) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar27 = (quantum_info->state).bits;\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19[1].offset];\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163de4:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19[1].offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19->offset];\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163fac:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19->offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if (0 < (int)uVar24) {\n      do {\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00164174:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n    }\n    if (pPVar19[4].traits == UndefinedPixelTrait) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = p[pPVar19[4].offset];\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if (0 < (int)uVar24) {\n      while( true ) {\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }\n    }\n    local_6c = local_6c + 1;\n    p = p + image->number_channels;\n    q = q + quantum_info->pad;\n    if (local_6c == (int)number_pixels) {\n      return;\n    }\n    uVar24 = quantum_info->depth;\n  } while( true );\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "ExportBGRAQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,\n                 uchar *q,ExceptionInfo *exception)" identifier (parameter_list "(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,\n                 uchar *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 "Quantum *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "uchar *q" type_identifier (pointer_declarator "*q" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  uchar uVar8;\n  uchar uVar9;\n  ushort uVar10;\n  ushort uVar11;\n  ushort uVar12;\n  uint uVar13;\n  uint uVar14;\n  ssize_t sVar15;\n  byte bVar16;\n  int iVar17;\n  uchar uVar18;\n  PixelChannelMap *pPVar19;\n  byte bVar20;\n  uchar uVar21;\n  uchar uVar22;\n  uchar uVar23;\n  uint uVar24;\n  size_t sVar25;\n  int iVar26;\n  uint uVar27;\n  uint uVar28;\n  float fVar29;\n  uint local_b4;\n  uchar local_ac;\n  uchar local_a4;\n  int local_9c;\n  uchar local_94;\n  uchar local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar24 = quantum_info->depth;\n  if (uVar24 == 0x10) {\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n    if ((int)number_pixels < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = p[image->channel_map[2].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = uVar21;\n      uVar9 = (uchar)iVar26;\n      if (quantum_info->endian != LSBEndian) {\n        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\n      }\n      q[1] = uVar18;\n      *q = uVar9;\n      dVar3 = p[image->channel_map[1].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[3] = uVar18;\n      q[2] = uVar21;\n      dVar3 = p[image->channel_map->offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[5] = uVar18;\n      q[4] = uVar21;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }\n      uVar21 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\n      }\n      q[7] = uVar21;\n      local_b4 = local_b4 + 1;\n      q[6] = local_ac;\n      q = q + quantum_info->pad + 8;\n      p = p + image->number_channels;\n      if (local_b4 == (int)number_pixels) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar24 < 0x11) {\n    if (uVar24 == 8) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      iVar26 = 0;\n      do {\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      } while (iVar26 != (int)number_pixels);\n      return;\n    }\n    if (uVar24 == 10) {\n      if (quantum_info->pack == MagickFalse) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }\n      if (quantum_info->quantum == 0x20) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }\n      iVar26 = 0;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      sVar25 = 10;\n      do {\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar24 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar24 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar24 != 0x40) goto LAB_001642d0;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n  }\n  uVar27 = 0;\n  if (uVar24 < 0x41) {\n    uVar27 = uVar24;\n  }\n  bVar16 = (byte)(uVar27 - 1);\n  bVar20 = bVar16 & 0x1f;\n  uVar13 = 2 << (bVar16 & 0x1f);\n  uVar14 = uVar13;\n  uVar28 = 0 << bVar20 | 2U >> 0x20 - bVar20;\n  if ((uVar27 - 1 & 0x20) != 0) {\n    uVar14 = 0;\n    uVar28 = uVar13;\n  }\n  local_7c = uVar14 - 1;\n  iStack_78 = (uVar28 - 1) + (uint)(uVar14 != 0);\nLAB_00163bfb:\n  if ((int)number_pixels < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    pPVar19 = image->channel_map;\n    if (0.0 < p[pPVar19[2].offset]) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar27 = (quantum_info->state).bits;\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19[1].offset];\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163de4:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19[1].offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19->offset];\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163fac:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19->offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if (0 < (int)uVar24) {\n      do {\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00164174:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n    }\n    if (pPVar19[4].traits == UndefinedPixelTrait) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = p[pPVar19[4].offset];\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if (0 < (int)uVar24) {\n      while( true ) {\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }\n    }\n    local_6c = local_6c + 1;\n    p = p + image->number_channels;\n    q = q + quantum_info->pad;\n    if (local_6c == (int)number_pixels) {\n      return;\n    }\n    uVar24 = quantum_info->depth;\n  } while( true );\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "float fVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "uchar uVar8;" type_identifier identifier ;) (declaration "uchar uVar9;" type_identifier identifier ;) (declaration "ushort uVar10;" type_identifier identifier ;) (declaration "ushort uVar11;" type_identifier identifier ;) (declaration "ushort uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "ssize_t sVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uchar uVar18;" type_identifier identifier ;) (declaration "PixelChannelMap *pPVar19;" type_identifier (pointer_declarator "*pPVar19" * identifier) ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "uchar uVar21;" type_identifier identifier ;) (declaration "uchar uVar22;" type_identifier identifier ;) (declaration "uchar uVar23;" type_identifier identifier ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "size_t sVar25;" primitive_type identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "uint uVar28;" type_identifier identifier ;) (declaration "float fVar29;" primitive_type identifier ;) (declaration "uint local_b4;" type_identifier identifier ;) (declaration "uchar local_ac;" type_identifier identifier ;) (declaration "uchar local_a4;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "uchar local_94;" type_identifier identifier ;) (declaration "uchar local_8c;" type_identifier identifier ;) (declaration "undefined8 local_84;" type_identifier identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int iStack_78;" primitive_type identifier ;) (declaration "uint local_74;" type_identifier identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (expression_statement "dVar5 = DAT_002e8160;" (assignment_expression "dVar5 = DAT_002e8160" identifier = identifier) ;) (expression_statement "fVar1 = DAT_002df8a8;" (assignment_expression "fVar1 = DAT_002df8a8" identifier = identifier) ;) (expression_statement "dVar3 = _DAT_002df2e0;" (assignment_expression "dVar3 = _DAT_002df2e0" identifier = identifier) ;) (if_statement "if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }" if (parenthesized_expression "(exception == (ExceptionInfo *)0x0)" ( (binary_expression "exception == (ExceptionInfo *)0x0" identifier == (cast_expression "(ExceptionInfo *)0x0" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }" { comment (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportBGRAQuantum"" " string_content ") ))) ;) })) (if_statement "if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }" if (parenthesized_expression "(exception->signature != 0xabacadab)" ( (binary_expression "exception->signature != 0xabacadab" (field_expression "exception->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }" { comment (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum")" identifier (argument_list "("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum")" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportBGRAQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar24 = quantum_info->depth;" (assignment_expression "uVar24 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if (uVar24 == 0x10) {\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n    if ((int)number_pixels < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = p[image->channel_map[2].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = uVar21;\n      uVar9 = (uchar)iVar26;\n      if (quantum_info->endian != LSBEndian) {\n        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\n      }\n      q[1] = uVar18;\n      *q = uVar9;\n      dVar3 = p[image->channel_map[1].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[3] = uVar18;\n      q[2] = uVar21;\n      dVar3 = p[image->channel_map->offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[5] = uVar18;\n      q[4] = uVar21;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }\n      uVar21 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\n      }\n      q[7] = uVar21;\n      local_b4 = local_b4 + 1;\n      q[6] = local_ac;\n      q = q + quantum_info->pad + 8;\n      p = p + image->number_channels;\n      if (local_b4 == (int)number_pixels) {\n        return;\n      }\n    } while( true );\n  }" if (parenthesized_expression "(uVar24 == 0x10)" ( (binary_expression "uVar24 == 0x10" identifier == number_literal) )) (compound_statement "{\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n    if ((int)number_pixels < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = p[image->channel_map[2].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = uVar21;\n      uVar9 = (uchar)iVar26;\n      if (quantum_info->endian != LSBEndian) {\n        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\n      }\n      q[1] = uVar18;\n      *q = uVar9;\n      dVar3 = p[image->channel_map[1].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[3] = uVar18;\n      q[2] = uVar21;\n      dVar3 = p[image->channel_map->offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[5] = uVar18;\n      q[4] = uVar21;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }\n      uVar21 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\n      }\n      q[7] = uVar21;\n      local_b4 = local_b4 + 1;\n      q[6] = local_ac;\n      q = q + quantum_info->pad + 8;\n      p = p + image->number_channels;\n      if (local_b4 == (int)number_pixels) {\n        return;\n      }\n    } while( true );\n  }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      } while (local_b4 != (int)number_pixels);\n      return;\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 ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }" { (if_statement "if ((int)number_pixels < 1) {\n        return;\n      }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      } while (local_b4 != (int)number_pixels);" do (compound_statement "{\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        *q = (uchar)uVar12;\n        q[1] = (uchar)uVar11;\n        dVar5 = _DAT_002df2e0;\n        uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));\n        uVar12 = uVar10 >> 8;\n        uVar11 = uVar10;\n        if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }\n        q[2] = (uchar)uVar12;\n        q[3] = (uchar)uVar11;\n        uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        q[4] = uVar21;\n        q[5] = (uchar)uVar12;\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }\n        uVar12 = SinglePrecisionToHalf(fVar1);\n        uVar21 = (uchar)(uVar12 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }\n        local_b4 = local_b4 + 1;\n        q[6] = uVar21;\n        q[7] = (uchar)uVar12;\n        q = q + quantum_info->pad + 8;\n        p = p + image->number_channels;\n      }" { (expression_statement "uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           );" (assignment_expression "uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           )" identifier = (call_expression "SinglePrecisionToHalf\n                           ((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           )" identifier (argument_list "((float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])\n                           )" ( (cast_expression "(float)((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset])" ( (binary_expression "(longdouble)dVar3 * (longdouble)p[image->channel_map[2].offset]" (cast_expression "(longdouble)dVar3" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (cast_expression "(longdouble)p[image->channel_map[2].offset]" ( (type_descriptor "longdouble" type_identifier) ) (subscript_expression "p[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]))) ))) )))) ;) (expression_statement "uVar12 = uVar10 >> 8;" (assignment_expression "uVar12 = uVar10 >> 8" identifier = (binary_expression "uVar10 >> 8" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\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          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }" { (expression_statement "uVar11 = uVar12;" (assignment_expression "uVar11 = uVar12" identifier = identifier) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) })) (expression_statement "*q = (uchar)uVar12;" (assignment_expression "*q = (uchar)uVar12" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar12" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[1] = (uchar)uVar11;" (assignment_expression "q[1] = (uchar)uVar11" (subscript_expression "q[1]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar11" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "dVar5 = _DAT_002df2e0;" (assignment_expression "dVar5 = _DAT_002df2e0" identifier = identifier) ;) (expression_statement "uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0));" (assignment_expression "uVar10 = SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0))" identifier = (call_expression "SinglePrecisionToHalf\n                           ((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0))" identifier (argument_list "((float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0))" ( (cast_expression "(float)((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0)" ( (binary_expression "(longdouble)p[image->channel_map[1].offset] *\n                                   (longdouble)_DAT_002df2e0" (cast_expression "(longdouble)p[image->channel_map[1].offset]" ( (type_descriptor "longdouble" type_identifier) ) (subscript_expression "p[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) * (cast_expression "(longdouble)_DAT_002df2e0" ( (type_descriptor "longdouble" type_identifier) ) identifier)) ))) )))) ;) (expression_statement "uVar12 = uVar10 >> 8;" (assignment_expression "uVar12 = uVar10 >> 8" identifier = (binary_expression "uVar10 >> 8" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          uVar11 = uVar12;\n          uVar12 = uVar10;\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          uVar11 = uVar12;\n          uVar12 = uVar10;\n        }" { (expression_statement "uVar11 = uVar12;" (assignment_expression "uVar11 = uVar12" identifier = identifier) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) })) (expression_statement "q[2] = (uchar)uVar12;" (assignment_expression "q[2] = (uchar)uVar12" (subscript_expression "q[2]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar12" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[3] = (uchar)uVar11;" (assignment_expression "q[3] = (uchar)uVar11" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar11" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]));" (assignment_expression "uVar12 = SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]))" identifier = (call_expression "SinglePrecisionToHalf\n                           ((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]))" identifier (argument_list "((float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset]))" ( (cast_expression "(float)((longdouble)dVar5 * (longdouble)p[image->channel_map->offset])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)dVar5 * (longdouble)p[image->channel_map->offset])" ( (binary_expression "(longdouble)dVar5 * (longdouble)p[image->channel_map->offset]" (cast_expression "(longdouble)dVar5" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (cast_expression "(longdouble)p[image->channel_map->offset]" ( (type_descriptor "longdouble" type_identifier) ) (subscript_expression "p[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]))) ))) )))) ;) (expression_statement "uVar21 = (uchar)(uVar12 >> 8);" (assignment_expression "uVar21 = (uchar)(uVar12 >> 8)" identifier = (call_expression "(uchar)(uVar12 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar12 >> 8)" ( (binary_expression "uVar12 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\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          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }" { (expression_statement "uVar21 = (uchar)uVar12;" (assignment_expression "uVar21 = (uchar)uVar12" identifier = (cast_expression "(uchar)uVar12" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = uVar12 >> 8;" (assignment_expression "uVar12 = uVar12 >> 8" identifier = (binary_expression "uVar12 >> 8" identifier >> number_literal)) ;) })) (expression_statement "q[4] = uVar21;" (assignment_expression "q[4] = uVar21" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[5] = (uchar)uVar12;" (assignment_expression "q[5] = (uchar)uVar12" (subscript_expression "q[5]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar12" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (if_statement "if (image->channel_map[4].traits == UndefinedPixelTrait) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }" if (parenthesized_expression "(image->channel_map[4].traits == UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits == UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) == identifier) )) (compound_statement "{\n          fVar1 = 1.0;\n        }" { (expression_statement "fVar1 = 1.0;" (assignment_expression "fVar1 = 1.0" identifier = number_literal) ;) }) (else_clause "else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }" else (compound_statement "{\n          fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);\n        }" { (expression_statement "fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]);" (assignment_expression "fVar1 = (float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset])" identifier = (cast_expression "(float)((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset])" ( (binary_expression "(longdouble)_DAT_002df2e0 * (longdouble)p[image->channel_map[4].offset]" (cast_expression "(longdouble)_DAT_002df2e0" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (cast_expression "(longdouble)p[image->channel_map[4].offset]" ( (type_descriptor "longdouble" type_identifier) ) (subscript_expression "p[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]))) )))) ;) }))) (expression_statement "uVar12 = SinglePrecisionToHalf(fVar1);" (assignment_expression "uVar12 = SinglePrecisionToHalf(fVar1)" identifier = (call_expression "SinglePrecisionToHalf(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))) ;) (expression_statement "uVar21 = (uchar)(uVar12 >> 8);" (assignment_expression "uVar21 = (uchar)(uVar12 >> 8)" identifier = (call_expression "(uchar)(uVar12 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar12 >> 8)" ( (binary_expression "uVar12 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\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          uVar21 = (uchar)uVar12;\n          uVar12 = uVar12 >> 8;\n        }" { (expression_statement "uVar21 = (uchar)uVar12;" (assignment_expression "uVar21 = (uchar)uVar12" identifier = (cast_expression "(uchar)uVar12" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = uVar12 >> 8;" (assignment_expression "uVar12 = uVar12 >> 8" identifier = (binary_expression "uVar12 >> 8" identifier >> number_literal)) ;) })) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "q[6] = uVar21;" (assignment_expression "q[6] = uVar21" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = (uchar)uVar12;" (assignment_expression "q[7] = (uchar)uVar12" (subscript_expression "q[7]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar12" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q = q + quantum_info->pad + 8;" (assignment_expression "q = q + quantum_info->pad + 8" identifier = (binary_expression "q + quantum_info->pad + 8" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(local_b4 != (int)number_pixels)" ( (binary_expression "local_b4 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)number_pixels < 1) {\n      return;\n    }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n      dVar3 = p[image->channel_map[2].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = uVar21;\n      uVar9 = (uchar)iVar26;\n      if (quantum_info->endian != LSBEndian) {\n        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\n      }\n      q[1] = uVar18;\n      *q = uVar9;\n      dVar3 = p[image->channel_map[1].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[3] = uVar18;\n      q[2] = uVar21;\n      dVar3 = p[image->channel_map->offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[5] = uVar18;\n      q[4] = uVar21;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }\n      uVar21 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\n      }\n      q[7] = uVar21;\n      local_b4 = local_b4 + 1;\n      q[6] = local_ac;\n      q = q + quantum_info->pad + 8;\n      p = p + image->number_channels;\n      if (local_b4 == (int)number_pixels) {\n        return;\n      }\n    } while( true );" do (compound_statement "{\n      dVar3 = p[image->channel_map[2].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = uVar21;\n      uVar9 = (uchar)iVar26;\n      if (quantum_info->endian != LSBEndian) {\n        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\n      }\n      q[1] = uVar18;\n      *q = uVar9;\n      dVar3 = p[image->channel_map[1].offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[3] = uVar18;\n      q[2] = uVar21;\n      dVar3 = p[image->channel_map->offset];\n      if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }\n      uVar18 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }\n      q[5] = uVar18;\n      q[4] = uVar21;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }\n      uVar21 = (uchar)iVar26;\n      if (quantum_info->endian == LSBEndian) {\n        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\n      }\n      q[7] = uVar21;\n      local_b4 = local_b4 + 1;\n      q[6] = local_ac;\n      q = q + quantum_info->pad + 8;\n      p = p + image->number_channels;\n      if (local_b4 == (int)number_pixels) {\n        return;\n      }\n    }" { (expression_statement "dVar3 = p[image->channel_map[2].offset];" (assignment_expression "dVar3 = p[image->channel_map[2].offset]" identifier = (subscript_expression "p[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar26 = 0;\n        uVar21 = '\0';\n      }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }" { (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" else (compound_statement "{\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" { (expression_statement "iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "uVar21 = (uchar)((uint)iVar26 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)iVar26 >> 8)" identifier = (call_expression "(uchar)((uint)iVar26 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)iVar26 >> 8)" ( (binary_expression "(uint)iVar26 >> 8" (cast_expression "(uint)iVar26" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) (expression_statement "uVar9 = (uchar)iVar26;" (assignment_expression "uVar9 = (uchar)iVar26" identifier = (cast_expression "(uchar)iVar26" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (if_statement "if (quantum_info->endian != LSBEndian) {\n        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\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        uVar18 = (uchar)iVar26;\n        uVar9 = uVar21;\n      }" { (expression_statement "uVar18 = (uchar)iVar26;" (assignment_expression "uVar18 = (uchar)iVar26" identifier = (cast_expression "(uchar)iVar26" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = uVar21;" (assignment_expression "uVar9 = uVar21" identifier = identifier) ;) })) (expression_statement "q[1] = uVar18;" (assignment_expression "q[1] = uVar18" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*q = uVar9;" (assignment_expression "*q = uVar9" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "dVar3 = p[image->channel_map[1].offset];" (assignment_expression "dVar3 = p[image->channel_map[1].offset]" identifier = (subscript_expression "p[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar26 = 0;\n        uVar21 = '\0';\n      }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }" { (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" else (compound_statement "{\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" { (expression_statement "iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "uVar21 = (uchar)((uint)iVar26 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)iVar26 >> 8)" identifier = (call_expression "(uchar)((uint)iVar26 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)iVar26 >> 8)" ( (binary_expression "(uint)iVar26 >> 8" (cast_expression "(uint)iVar26" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "uVar18 = (uchar)iVar26;" (assignment_expression "uVar18 = (uchar)iVar26" identifier = (cast_expression "(uchar)iVar26" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\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        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) (expression_statement "uVar21 = (uchar)iVar26;" (assignment_expression "uVar21 = (uchar)iVar26" identifier = (cast_expression "(uchar)iVar26" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) })) (expression_statement "q[3] = uVar18;" (assignment_expression "q[3] = uVar18" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar21;" (assignment_expression "q[2] = uVar21" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar3 = p[image->channel_map->offset];" (assignment_expression "dVar3 = p[image->channel_map->offset]" identifier = (subscript_expression "p[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ])) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar26 = 0;\n        uVar21 = '\0';\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar26 = 0;\n        uVar21 = '\0';\n      }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }\n      else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar26 = -1;\n        uVar21 = 0xff;\n      }" { (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" else (compound_statement "{\n        iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        uVar21 = (uchar)((uint)iVar26 >> 8);\n      }" { (expression_statement "iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "uVar21 = (uchar)((uint)iVar26 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)iVar26 >> 8)" identifier = (call_expression "(uchar)((uint)iVar26 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)iVar26 >> 8)" ( (binary_expression "(uint)iVar26 >> 8" (cast_expression "(uint)iVar26" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "uVar18 = (uchar)iVar26;" (assignment_expression "uVar18 = (uchar)iVar26" identifier = (cast_expression "(uchar)iVar26" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\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        uVar18 = uVar21;\n        uVar21 = (uchar)iVar26;\n      }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) (expression_statement "uVar21 = (uchar)iVar26;" (assignment_expression "uVar21 = (uchar)iVar26" identifier = (cast_expression "(uchar)iVar26" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) })) (expression_statement "q[5] = uVar18;" (assignment_expression "q[5] = uVar18" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[4] = uVar21;" (assignment_expression "q[4] = uVar21" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }" if (parenthesized_expression "(image->channel_map[4].traits == UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits == UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) == identifier) )) (compound_statement "{\nLAB_00164f80:\n        iVar26 = -1;\n        local_ac = 0xff;\n      }" { (labeled_statement "LAB_00164f80:\n        iVar26 = -1;" statement_identifier : (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;)) (expression_statement "local_ac = 0xff;" (assignment_expression "local_ac = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }" else (compound_statement "{\n        dVar3 = p[image->channel_map[4].offset];\n        if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }\n      }" { (expression_statement "dVar3 = p[image->channel_map[4].offset];" (assignment_expression "dVar3 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (dVar3 <= 0.0) {\n          iVar26 = 0;\n          local_ac = '\0';\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          iVar26 = 0;\n          local_ac = '\0';\n        }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "local_ac = '\0';" (assignment_expression "local_ac = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }" else (compound_statement "{\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (uchar)((uint)iVar26 >> 8);\n        }" { (if_statement "if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00164f80;" goto statement_identifier ;)) (expression_statement "iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar26 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_ac = (uchar)((uint)iVar26 >> 8);" (assignment_expression "local_ac = (uchar)((uint)iVar26 >> 8)" identifier = (call_expression "(uchar)((uint)iVar26 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)iVar26 >> 8)" ( (binary_expression "(uint)iVar26 >> 8" (cast_expression "(uint)iVar26" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))) }))) (expression_statement "uVar21 = (uchar)iVar26;" (assignment_expression "uVar21 = (uchar)iVar26" identifier = (cast_expression "(uchar)iVar26" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\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        uVar21 = local_ac;\n        local_ac = (uchar)iVar26;\n      }" { (expression_statement "uVar21 = local_ac;" (assignment_expression "uVar21 = local_ac" identifier = identifier) ;) (expression_statement "local_ac = (uchar)iVar26;" (assignment_expression "local_ac = (uchar)iVar26" identifier = (cast_expression "(uchar)iVar26" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) })) (expression_statement "q[7] = uVar21;" (assignment_expression "q[7] = uVar21" (subscript_expression "q[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "q[6] = local_ac;" (assignment_expression "q[6] = local_ac" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q = q + quantum_info->pad + 8;" (assignment_expression "q = q + quantum_info->pad + 8" identifier = (binary_expression "q + quantum_info->pad + 8" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (if_statement "if (local_b4 == (int)number_pixels) {\n        return;\n      }" if (parenthesized_expression "(local_b4 == (int)number_pixels)" ( (binary_expression "local_b4 == (int)number_pixels" identifier == (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (uVar24 < 0x11) {\n    if (uVar24 == 8) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      iVar26 = 0;\n      do {\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      } while (iVar26 != (int)number_pixels);\n      return;\n    }\n    if (uVar24 == 10) {\n      if (quantum_info->pack == MagickFalse) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }\n      if (quantum_info->quantum == 0x20) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }\n      iVar26 = 0;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      sVar25 = 10;\n      do {\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar24 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar24 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar24 != 0x40) goto LAB_001642d0;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n  }" if (parenthesized_expression "(uVar24 < 0x11)" ( (binary_expression "uVar24 < 0x11" identifier < number_literal) )) (compound_statement "{\n    if (uVar24 == 8) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      iVar26 = 0;\n      do {\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      } while (iVar26 != (int)number_pixels);\n      return;\n    }\n    if (uVar24 == 10) {\n      if (quantum_info->pack == MagickFalse) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }\n      if (quantum_info->quantum == 0x20) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }\n      iVar26 = 0;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      sVar25 = 10;\n      do {\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar24 == 0) goto LAB_00163bfb;\n  }" { (if_statement "if (uVar24 == 8) {\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      iVar26 = 0;\n      do {\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      } while (iVar26 != (int)number_pixels);\n      return;\n    }" if (parenthesized_expression "(uVar24 == 8)" ( (binary_expression "uVar24 == 8" identifier == number_literal) )) (compound_statement "{\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      iVar26 = 0;\n      do {\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      } while (iVar26 != (int)number_pixels);\n      return;\n    }" { (if_statement "if ((int)number_pixels < 1) {\n        return;\n      }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      } while (iVar26 != (int)number_pixels);" do (compound_statement "{\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *q = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[1] = uVar21;\n        uVar21 = '\0';\n        if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        q[2] = uVar21;\n        uVar21 = 0xff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        q[3] = uVar21;\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 4;\n      }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < p[image->channel_map[2].offset]) {\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < p[image->channel_map[2].offset])" ( (binary_expression "0.0 < p[image->channel_map[2].offset]" number_literal < (subscript_expression "p[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n          dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c;" (assignment_expression "dVar3 = p[image->channel_map[2].offset] / (double)DAT_002e814c" identifier = (binary_expression "p[image->channel_map[2].offset] / (double)DAT_002e814c" (subscript_expression "p[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "uchar" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < p[image->channel_map[1].offset]) {\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < p[image->channel_map[1].offset])" ( (binary_expression "0.0 < p[image->channel_map[1].offset]" number_literal < (subscript_expression "p[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n          dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c;" (assignment_expression "dVar3 = p[image->channel_map[1].offset] / (double)DAT_002e814c" identifier = (binary_expression "p[image->channel_map[1].offset] / (double)DAT_002e814c" (subscript_expression "p[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "uchar" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "q[1] = uVar21;" (assignment_expression "q[1] = uVar21" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < p[image->channel_map->offset]) {\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < p[image->channel_map->offset])" ( (binary_expression "0.0 < p[image->channel_map->offset]" number_literal < (subscript_expression "p[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ])) )) (compound_statement "{\n          dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;\n          uVar21 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c;" (assignment_expression "dVar3 = p[image->channel_map->offset] / (double)DAT_002e814c" identifier = (binary_expression "p[image->channel_map->offset] / (double)DAT_002e814c" (subscript_expression "p[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]) / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "uchar" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "q[2] = uVar21;" (assignment_expression "q[2] = uVar21" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }" if (parenthesized_expression "(image->channel_map[4].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits != UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n          uVar21 = '\0';\n          if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < p[image->channel_map[4].offset]) {\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }" if (parenthesized_expression "(0.0 < p[image->channel_map[4].offset])" ( (binary_expression "0.0 < p[image->channel_map[4].offset]" number_literal < (subscript_expression "p[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n            dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }" { (expression_statement "dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c;" (assignment_expression "dVar3 = p[image->channel_map[4].offset] / (double)DAT_002e814c" identifier = (binary_expression "p[image->channel_map[4].offset] / (double)DAT_002e814c" (subscript_expression "p[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002e8150 <= dVar3) {\n              uVar21 = 0xff;\n            }\n            else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" if (parenthesized_expression "((double)DAT_002e8150 <= dVar3)" ( (binary_expression "(double)DAT_002e8150 <= dVar3" (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              uVar21 = 0xff;\n            }" { (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" else (compound_statement "{\n              uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" { (expression_statement "uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "uVar21 = (uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(uchar)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "uchar" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) })) })) (expression_statement "q[3] = uVar21;" (assignment_expression "q[3] = uVar21" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar26 = iVar26 + 1;" (assignment_expression "iVar26 = iVar26 + 1" identifier = (binary_expression "iVar26 + 1" identifier + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 4;" (assignment_expression "q = q + quantum_info->pad + 4" identifier = (binary_expression "q + quantum_info->pad + 4" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) }) while (parenthesized_expression "(iVar26 != (int)number_pixels)" ( (binary_expression "iVar26 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar24 == 10) {\n      if (quantum_info->pack == MagickFalse) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }\n      if (quantum_info->quantum == 0x20) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }\n      iVar26 = 0;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      sVar25 = 10;\n      do {\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      } while( true );\n    }" if (parenthesized_expression "(uVar24 == 10)" ( (binary_expression "uVar24 == 10" identifier == number_literal) )) (compound_statement "{\n      if (quantum_info->pack == MagickFalse) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }\n      if (quantum_info->quantum == 0x20) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }\n      iVar26 = 0;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      sVar25 = 10;\n      do {\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      } while( true );\n    }" { (if_statement "if (quantum_info->pack == MagickFalse) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }" if (parenthesized_expression "(quantum_info->pack == MagickFalse)" ( (binary_expression "quantum_info->pack == MagickFalse" (field_expression "quantum_info->pack" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        uVar24 = 0;\n        iVar26 = 0;\n        do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );\n      }" { (if_statement "if ((int)number_pixels < 1) {\n          return;\n        }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        } while( true );" do (compound_statement "{\n          iVar17 = 0;\n          do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);\n          iVar26 = iVar26 + 4;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }\n        }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          } while (iVar17 != 4);" do (compound_statement "{\n            pPVar19 = image->channel_map;\n            if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            uVar27 = (uint)(iVar17 + iVar26) % 3;\n            if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }\n            iVar17 = iVar17 + 1;\n          }" { (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (if_statement "if (iVar17 == 2) {\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }\n            else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }" if (parenthesized_expression "(iVar17 == 2)" ( (binary_expression "iVar17 == 2" identifier == number_literal) )) (compound_statement "{\n              sVar15 = pPVar19[2].offset;\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }" { (expression_statement "sVar15 = pPVar19[2].offset;" (assignment_expression "sVar15 = pPVar19[2].offset" identifier = (field_expression "pPVar19[2].offset" (subscript_expression "pPVar19[2]" identifier [ number_literal ]) . field_identifier)) ;) (labeled_statement "LAB_001644de:\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);" statement_identifier : (expression_statement "fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);" (assignment_expression "fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff)" identifier = (cast_expression "(float)((longlong)ROUND(p[sVar15]) & 0xffffffff)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longlong)ROUND(p[sVar15]) & 0xffffffff)" ( (binary_expression "(longlong)ROUND(p[sVar15]) & 0xffffffff" (cast_expression "(longlong)ROUND(p[sVar15])" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(p[sVar15])" identifier (argument_list "(p[sVar15])" ( (subscript_expression "p[sVar15]" identifier [ identifier ]) )))) & number_literal) )))) ;)) }) (else_clause "else if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }" else (if_statement "if (iVar17 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }" if (parenthesized_expression "(iVar17 == 3)" ( (binary_expression "iVar17 == 3" identifier == number_literal) )) (compound_statement "{\n              fVar1 = DAT_002df8a8;\n              if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }\n            }" { (expression_statement "fVar1 = DAT_002df8a8;" (assignment_expression "fVar1 = DAT_002df8a8" identifier = identifier) ;) (if_statement "if (pPVar19[4].traits != UndefinedPixelTrait) {\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }" if (parenthesized_expression "(pPVar19[4].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar19[4].traits != UndefinedPixelTrait" (field_expression "pPVar19[4].traits" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                sVar15 = pPVar19[4].offset;\n                goto LAB_001644de;\n              }" { (expression_statement "sVar15 = pPVar19[4].offset;" (assignment_expression "sVar15 = pPVar19[4].offset" identifier = (field_expression "pPVar19[4].offset" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier)) ;) (goto_statement "goto LAB_001644de;" goto statement_identifier ;) })) }) (else_clause "else {\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }" else (compound_statement "{\n              if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }\n              fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);\n            }" { (if_statement "if (iVar17 == 1) {\n                sVar15 = pPVar19[1].offset;\n              }\n              else {\n                sVar15 = pPVar19->offset;\n              }" if (parenthesized_expression "(iVar17 == 1)" ( (binary_expression "iVar17 == 1" identifier == number_literal) )) (compound_statement "{\n                sVar15 = pPVar19[1].offset;\n              }" { (expression_statement "sVar15 = pPVar19[1].offset;" (assignment_expression "sVar15 = pPVar19[1].offset" identifier = (field_expression "pPVar19[1].offset" (subscript_expression "pPVar19[1]" identifier [ number_literal ]) . field_identifier)) ;) }) (else_clause "else {\n                sVar15 = pPVar19->offset;\n              }" else (compound_statement "{\n                sVar15 = pPVar19->offset;\n              }" { (expression_statement "sVar15 = pPVar19->offset;" (assignment_expression "sVar15 = pPVar19->offset" identifier = (field_expression "pPVar19->offset" identifier -> field_identifier)) ;) }))) (expression_statement "fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff);" (assignment_expression "fVar1 = (float)((longlong)ROUND(p[sVar15]) & 0xffffffff)" identifier = (cast_expression "(float)((longlong)ROUND(p[sVar15]) & 0xffffffff)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longlong)ROUND(p[sVar15]) & 0xffffffff)" ( (binary_expression "(longlong)ROUND(p[sVar15]) & 0xffffffff" (cast_expression "(longlong)ROUND(p[sVar15])" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(p[sVar15])" identifier (argument_list "(p[sVar15])" ( (subscript_expression "p[sVar15]" identifier [ identifier ]) )))) & number_literal) )))) ;) }))))) (expression_statement "uVar27 = (uint)(iVar17 + iVar26) % 3;" (assignment_expression "uVar27 = (uint)(iVar17 + iVar26) % 3" identifier = (binary_expression "(uint)(iVar17 + iVar26) % 3" (call_expression "(uint)(iVar17 + iVar26)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar17 + iVar26)" ( (binary_expression "iVar17 + iVar26" identifier + identifier) ))) % number_literal)) ;) (if_statement "if (uVar27 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(uVar27 == 1)" ( (binary_expression "uVar27 == 1" identifier == number_literal) )) (compound_statement "{\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }\n            }" { (if_statement "if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }\n              }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  uVar24 = 0xfffff000;\n                }" { (expression_statement "uVar24 = 0xfffff000;" (assignment_expression "uVar24 = 0xfffff000" identifier = number_literal) ;) }) (else_clause "else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }" else (compound_statement "{\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 0xc;\n                }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" else (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar24 = uVar24 | local_34 << 0xc;" (assignment_expression "uVar24 = uVar24 | local_34 << 0xc" identifier = (binary_expression "uVar24 | local_34 << 0xc" identifier | (binary_expression "local_34 << 0xc" identifier << number_literal))) ;) }))) })) }) (else_clause "else if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }" else (if_statement "if (uVar27 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(uVar27 == 2)" ( (binary_expression "uVar27 == 2" identifier == number_literal) )) (compound_statement "{\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }\n              uVar18 = (uchar)(uVar24 >> 8);\n              uVar21 = (uchar)(uVar24 >> 0x10);\n              local_a4 = (uchar)(uVar24 >> 0x18);\n              if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }\n            }" { (if_statement "if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }\n              }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                  uVar24 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  uVar24 = 0xfffffffc;\n                }" { (expression_statement "uVar24 = 0xfffffffc;" (assignment_expression "uVar24 = 0xfffffffc" identifier = number_literal) ;) }) (else_clause "else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }" else (compound_statement "{\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar24 = uVar24 | local_34 << 2;\n                }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" else (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar24 = uVar24 | local_34 << 2;" (assignment_expression "uVar24 = uVar24 | local_34 << 2" identifier = (binary_expression "uVar24 | local_34 << 2" identifier | (binary_expression "local_34 << 2" identifier << number_literal))) ;) }))) })) (expression_statement "uVar18 = (uchar)(uVar24 >> 8);" (assignment_expression "uVar18 = (uchar)(uVar24 >> 8)" identifier = (call_expression "(uchar)(uVar24 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 8)" ( (binary_expression "uVar24 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar21 = (uchar)(uVar24 >> 0x10);" (assignment_expression "uVar21 = (uchar)(uVar24 >> 0x10)" identifier = (call_expression "(uchar)(uVar24 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x10)" ( (binary_expression "uVar24 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (uchar)(uVar24 >> 0x18);" (assignment_expression "local_a4 = (uchar)(uVar24 >> 0x18)" identifier = (call_expression "(uchar)(uVar24 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x18)" ( (binary_expression "uVar24 >> 0x18" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }\n              else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\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                *q = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar21;\n                q[1] = uVar18;\n                q[3] = local_a4;\n                q = q + 4;\n              }" { (expression_statement "*q = (uchar)uVar24;" (assignment_expression "*q = (uchar)uVar24" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "q[2] = uVar21;" (assignment_expression "q[2] = uVar21" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[1] = uVar18;" (assignment_expression "q[1] = uVar18" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = local_a4;" (assignment_expression "q[3] = local_a4" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q = q + 4;" (assignment_expression "q = q + 4" identifier = (binary_expression "q + 4" identifier + number_literal)) ;) }) (else_clause "else {\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }" else (compound_statement "{\n                q[3] = (uchar)uVar24;\n                uVar24 = 0;\n                q[2] = uVar18;\n                *q = local_a4;\n                q[1] = uVar21;\n                q = q + 4;\n              }" { (expression_statement "q[3] = (uchar)uVar24;" (assignment_expression "q[3] = (uchar)uVar24" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "q[2] = uVar18;" (assignment_expression "q[2] = uVar18" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*q = local_a4;" (assignment_expression "*q = local_a4" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = uVar21;" (assignment_expression "q[1] = uVar21" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q = q + 4;" (assignment_expression "q = q + 4" identifier = (binary_expression "q + 4" identifier + number_literal)) ;) }))) }) (else_clause "else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }" else (if_statement "if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }\n            }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                uVar24 = uVar24 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                uVar24 = uVar24 | 0xffc00000;\n              }" { (expression_statement "uVar24 = uVar24 | 0xffc00000;" (assignment_expression "uVar24 = uVar24 | 0xffc00000" identifier = (binary_expression "uVar24 | 0xffc00000" identifier | number_literal)) ;) }) (else_clause "else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }" else (compound_statement "{\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar24 = uVar24 | local_34 << 0x16;\n              }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" else (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar24 = uVar24 | local_34 << 0x16;" (assignment_expression "uVar24 = uVar24 | local_34 << 0x16" identifier = (binary_expression "uVar24 | local_34 << 0x16" identifier | (binary_expression "local_34 << 0x16" identifier << number_literal))) ;) }))) })))))) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar17 != 4)" ( (binary_expression "iVar17 != 4" identifier != number_literal) )) ;) (expression_statement "iVar26 = iVar26 + 4;" (assignment_expression "iVar26 = iVar26 + 4" identifier = (binary_expression "iVar26 + 4" identifier + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad;" (assignment_expression "q = q + quantum_info->pad" identifier = (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (if_statement "if ((int)number_pixels << 2 == iVar26) {\n            return;\n          }" if (parenthesized_expression "((int)number_pixels << 2 == iVar26)" ( (binary_expression "(int)number_pixels << 2 == iVar26" (binary_expression "(int)number_pixels << 2" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) == identifier) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (quantum_info->quantum == 0x20) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }" if (parenthesized_expression "(quantum_info->quantum == 0x20)" ( (binary_expression "quantum_info->quantum == 0x20" (field_expression "quantum_info->quantum" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        sVar25 = (quantum_info->state).bits;\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }\n        return;\n      }" { (if_statement "if ((int)number_pixels < 1) {\n          return;\n        }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "sVar25 = (quantum_info->state).bits;" (assignment_expression "sVar25 = (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 "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "local_74 = 10;" (assignment_expression "local_74 = 10" identifier = number_literal) ;) (while_statement "while( true ) {\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          local_b4 = 0;\n          pPVar19 = image->channel_map;\n          if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0;\n          if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }\n          local_b4 = 0x3ff;\n          if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }\n          local_9c = local_9c + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad;\n          if (local_9c == (int)number_pixels) break;\n          local_74 = quantum_info->depth;\n        }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (if_statement "if (0.0 < p[pPVar19->offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < p[pPVar19->offset])" ( (binary_expression "0.0 < p[pPVar19->offset]" number_literal < (subscript_expression "p[pPVar19->offset]" identifier [ (field_expression "pPVar19->offset" identifier -> field_identifier) ])) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(p[pPVar19->offset] * (double)DAT_003057bc)" ( (binary_expression "p[pPVar19->offset] * (double)DAT_003057bc" (subscript_expression "p[pPVar19->offset]" identifier [ (field_expression "pPVar19->offset" identifier -> field_identifier) ]) * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (sVar25 == 0) {\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }" if (parenthesized_expression "(sVar25 == 0)" ( (binary_expression "sVar25 == 0" identifier == number_literal) )) (compound_statement "{\n            (quantum_info->state).bits = 0x20;\n            sVar25 = 0x20;\n          }" { (expression_statement "(quantum_info->state).bits = 0x20;" (assignment_expression "(quantum_info->state).bits = 0x20" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "sVar25 = 0x20;" (assignment_expression "sVar25 = 0x20" identifier = number_literal) ;) })) (if_statement "if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }" { (expression_statement "uVar24 = (quantum_info->state).pixel;" (assignment_expression "uVar24 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar27 = local_74;" (assignment_expression "uVar27 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);" do (compound_statement "{\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            }" { (expression_statement "uVar28 = sVar25;" (assignment_expression "uVar28 = sVar25" identifier = identifier) ;) (if_statement "if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }" if (parenthesized_expression "(uVar27 <= sVar25)" ( (binary_expression "uVar27 <= sVar25" identifier <= identifier) )) (compound_statement "{\n                uVar28 = uVar27;\n              }" { (expression_statement "uVar28 = uVar27;" (assignment_expression "uVar28 = uVar27" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar27;" (assignment_expression "cVar6 = (char)uVar27" identifier = (cast_expression "(char)uVar27" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar27 = uVar27 - uVar28;" (assignment_expression "uVar27 = uVar27 - uVar28" identifier = (binary_expression "uVar27 - uVar28" identifier - identifier)) ;) (expression_statement "uVar14 = (quantum_info->state).mask[uVar28];" (assignment_expression "uVar14 = (quantum_info->state).mask[uVar28]" identifier = (subscript_expression "(quantum_info->state).mask[uVar28]" (field_expression "(quantum_info->state).mask" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) [ identifier ])) ;) (expression_statement "cVar7 = (char)sVar25;" (assignment_expression "cVar7 = (char)sVar25" identifier = (cast_expression "(char)sVar25" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "sVar25 = sVar25 - uVar28;" (assignment_expression "sVar25 = sVar25 - uVar28" identifier = (binary_expression "sVar25 - uVar28" identifier - identifier)) ;) (expression_statement "(quantum_info->state).bits = sVar25;" (assignment_expression "(quantum_info->state).bits = sVar25" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "(quantum_info->state).pixel = uVar24;" (assignment_expression "(quantum_info->state).pixel = uVar24" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }" if (parenthesized_expression "(sVar25 == 0)" ( (binary_expression "sVar25 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }" { (expression_statement "uVar21 = (uchar)(uVar24 >> 0x18);" (assignment_expression "uVar21 = (uchar)(uVar24 >> 0x18)" identifier = (call_expression "(uchar)(uVar24 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x18)" ( (binary_expression "uVar24 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (uchar)(uVar24 >> 0x10);" (assignment_expression "local_ac = (uchar)(uVar24 >> 0x10)" identifier = (call_expression "(uchar)(uVar24 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x10)" ( (binary_expression "uVar24 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (uchar)(uVar24 >> 8);" (assignment_expression "local_a4 = (uchar)(uVar24 >> 8)" identifier = (call_expression "(uchar)(uVar24 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 8)" ( (binary_expression "uVar24 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\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                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }" { (expression_statement "*q = (uchar)uVar24;" (assignment_expression "*q = (uchar)uVar24" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[3] = uVar21;" (assignment_expression "q[3] = uVar21" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[1] = local_a4;" (assignment_expression "q[1] = local_a4" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_ac;" (assignment_expression "q[2] = local_ac" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }" else (compound_statement "{\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }" { (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = local_ac;" (assignment_expression "q[1] = local_ac" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_a4;" (assignment_expression "q[2] = local_a4" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = (uchar)uVar24;" (assignment_expression "q[3] = (uchar)uVar24" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = quantum_info->depth;" (assignment_expression "local_74 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (expression_statement "(quantum_info->state).pixel = 0;" (assignment_expression "(quantum_info->state).pixel = 0" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "(quantum_info->state).bits = 0x20;" (assignment_expression "(quantum_info->state).bits = 0x20" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "sVar25 = 0x20;" (assignment_expression "sVar25 = 0x20" identifier = number_literal) ;) (expression_statement "q = q + 4;" (assignment_expression "q = q + 4" identifier = (binary_expression "q + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar27)" ( (binary_expression "0 < (int)uVar27" number_literal < (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < p[pPVar19[1].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < p[pPVar19[1].offset])" ( (binary_expression "0.0 < p[pPVar19[1].offset]" number_literal < (subscript_expression "p[pPVar19[1].offset]" identifier [ (field_expression "pPVar19[1].offset" (subscript_expression "pPVar19[1]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(p[pPVar19[1].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(p[pPVar19[1].offset] * (double)DAT_003057bc)" ( (binary_expression "p[pPVar19[1].offset] * (double)DAT_003057bc" (subscript_expression "p[pPVar19[1].offset]" identifier [ (field_expression "pPVar19[1].offset" (subscript_expression "pPVar19[1]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }" { (expression_statement "uVar24 = (quantum_info->state).pixel;" (assignment_expression "uVar24 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar27 = local_74;" (assignment_expression "uVar27 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);" do (compound_statement "{\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            }" { (expression_statement "uVar28 = sVar25;" (assignment_expression "uVar28 = sVar25" identifier = identifier) ;) (if_statement "if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }" if (parenthesized_expression "(uVar27 <= sVar25)" ( (binary_expression "uVar27 <= sVar25" identifier <= identifier) )) (compound_statement "{\n                uVar28 = uVar27;\n              }" { (expression_statement "uVar28 = uVar27;" (assignment_expression "uVar28 = uVar27" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar27;" (assignment_expression "cVar6 = (char)uVar27" identifier = (cast_expression "(char)uVar27" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar27 = uVar27 - uVar28;" (assignment_expression "uVar27 = uVar27 - uVar28" identifier = (binary_expression "uVar27 - uVar28" identifier - identifier)) ;) (expression_statement "uVar14 = (quantum_info->state).mask[uVar28];" (assignment_expression "uVar14 = (quantum_info->state).mask[uVar28]" identifier = (subscript_expression "(quantum_info->state).mask[uVar28]" (field_expression "(quantum_info->state).mask" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) [ identifier ])) ;) (expression_statement "cVar7 = (char)sVar25;" (assignment_expression "cVar7 = (char)sVar25" identifier = (cast_expression "(char)sVar25" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "sVar25 = sVar25 - uVar28;" (assignment_expression "sVar25 = sVar25 - uVar28" identifier = (binary_expression "sVar25 - uVar28" identifier - identifier)) ;) (expression_statement "(quantum_info->state).bits = sVar25;" (assignment_expression "(quantum_info->state).bits = sVar25" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "(quantum_info->state).pixel = uVar24;" (assignment_expression "(quantum_info->state).pixel = uVar24" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }" if (parenthesized_expression "(sVar25 == 0)" ( (binary_expression "sVar25 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }" { (expression_statement "uVar21 = (uchar)(uVar24 >> 0x18);" (assignment_expression "uVar21 = (uchar)(uVar24 >> 0x18)" identifier = (call_expression "(uchar)(uVar24 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x18)" ( (binary_expression "uVar24 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (uchar)(uVar24 >> 0x10);" (assignment_expression "local_ac = (uchar)(uVar24 >> 0x10)" identifier = (call_expression "(uchar)(uVar24 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x10)" ( (binary_expression "uVar24 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (uchar)(uVar24 >> 8);" (assignment_expression "local_a4 = (uchar)(uVar24 >> 8)" identifier = (call_expression "(uchar)(uVar24 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 8)" ( (binary_expression "uVar24 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\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                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }" { (expression_statement "*q = (uchar)uVar24;" (assignment_expression "*q = (uchar)uVar24" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[3] = uVar21;" (assignment_expression "q[3] = uVar21" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[1] = local_a4;" (assignment_expression "q[1] = local_a4" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_ac;" (assignment_expression "q[2] = local_ac" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }" else (compound_statement "{\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }" { (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = local_ac;" (assignment_expression "q[1] = local_ac" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_a4;" (assignment_expression "q[2] = local_a4" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = (uchar)uVar24;" (assignment_expression "q[3] = (uchar)uVar24" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = quantum_info->depth;" (assignment_expression "local_74 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (expression_statement "(quantum_info->state).pixel = 0;" (assignment_expression "(quantum_info->state).pixel = 0" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "(quantum_info->state).bits = 0x20;" (assignment_expression "(quantum_info->state).bits = 0x20" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "sVar25 = 0x20;" (assignment_expression "sVar25 = 0x20" identifier = number_literal) ;) (expression_statement "q = q + 4;" (assignment_expression "q = q + 4" identifier = (binary_expression "q + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar27)" ( (binary_expression "0 < (int)uVar27" number_literal < (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < p[pPVar19[2].offset]) {\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < p[pPVar19[2].offset])" ( (binary_expression "0.0 < p[pPVar19[2].offset]" number_literal < (subscript_expression "p[pPVar19[2].offset]" identifier [ (field_expression "pPVar19[2].offset" (subscript_expression "pPVar19[2]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(p[pPVar19[2].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(p[pPVar19[2].offset] * (double)DAT_003057bc)" ( (binary_expression "p[pPVar19[2].offset] * (double)DAT_003057bc" (subscript_expression "p[pPVar19[2].offset]" identifier [ (field_expression "pPVar19[2].offset" (subscript_expression "pPVar19[2]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);\n            pPVar19 = image->channel_map;\n          }" { (expression_statement "uVar24 = (quantum_info->state).pixel;" (assignment_expression "uVar24 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar27 = local_74;" (assignment_expression "uVar27 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            } while (0 < (int)uVar27);" do (compound_statement "{\n              uVar28 = sVar25;\n              if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }\n              cVar6 = (char)uVar27;\n              uVar27 = uVar27 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }\n            }" { (expression_statement "uVar28 = sVar25;" (assignment_expression "uVar28 = sVar25" identifier = identifier) ;) (if_statement "if (uVar27 <= sVar25) {\n                uVar28 = uVar27;\n              }" if (parenthesized_expression "(uVar27 <= sVar25)" ( (binary_expression "uVar27 <= sVar25" identifier <= identifier) )) (compound_statement "{\n                uVar28 = uVar27;\n              }" { (expression_statement "uVar28 = uVar27;" (assignment_expression "uVar28 = uVar27" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar27;" (assignment_expression "cVar6 = (char)uVar27" identifier = (cast_expression "(char)uVar27" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar27 = uVar27 - uVar28;" (assignment_expression "uVar27 = uVar27 - uVar28" identifier = (binary_expression "uVar27 - uVar28" identifier - identifier)) ;) (expression_statement "uVar14 = (quantum_info->state).mask[uVar28];" (assignment_expression "uVar14 = (quantum_info->state).mask[uVar28]" identifier = (subscript_expression "(quantum_info->state).mask[uVar28]" (field_expression "(quantum_info->state).mask" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) [ identifier ])) ;) (expression_statement "cVar7 = (char)sVar25;" (assignment_expression "cVar7 = (char)sVar25" identifier = (cast_expression "(char)sVar25" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "sVar25 = sVar25 - uVar28;" (assignment_expression "sVar25 = sVar25 - uVar28" identifier = (binary_expression "sVar25 - uVar28" identifier - identifier)) ;) (expression_statement "(quantum_info->state).bits = sVar25;" (assignment_expression "(quantum_info->state).bits = sVar25" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar24 = uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar24 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar14" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "(quantum_info->state).pixel = uVar24;" (assignment_expression "(quantum_info->state).pixel = uVar24" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }" if (parenthesized_expression "(sVar25 == 0)" ( (binary_expression "sVar25 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                local_74 = quantum_info->depth;\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                (quantum_info->state).bits = 0x20;\n                sVar25 = 0x20;\n                q = q + 4;\n              }" { (expression_statement "uVar21 = (uchar)(uVar24 >> 0x18);" (assignment_expression "uVar21 = (uchar)(uVar24 >> 0x18)" identifier = (call_expression "(uchar)(uVar24 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x18)" ( (binary_expression "uVar24 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (uchar)(uVar24 >> 0x10);" (assignment_expression "local_ac = (uchar)(uVar24 >> 0x10)" identifier = (call_expression "(uchar)(uVar24 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x10)" ( (binary_expression "uVar24 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (uchar)(uVar24 >> 8);" (assignment_expression "local_a4 = (uchar)(uVar24 >> 8)" identifier = (call_expression "(uchar)(uVar24 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 8)" ( (binary_expression "uVar24 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\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                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }" { (expression_statement "*q = (uchar)uVar24;" (assignment_expression "*q = (uchar)uVar24" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[3] = uVar21;" (assignment_expression "q[3] = uVar21" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[1] = local_a4;" (assignment_expression "q[1] = local_a4" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_ac;" (assignment_expression "q[2] = local_ac" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }" else (compound_statement "{\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }" { (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = local_ac;" (assignment_expression "q[1] = local_ac" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_a4;" (assignment_expression "q[2] = local_a4" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = (uchar)uVar24;" (assignment_expression "q[3] = (uchar)uVar24" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = quantum_info->depth;" (assignment_expression "local_74 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (expression_statement "(quantum_info->state).pixel = 0;" (assignment_expression "(quantum_info->state).pixel = 0" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "(quantum_info->state).bits = 0x20;" (assignment_expression "(quantum_info->state).bits = 0x20" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "sVar25 = 0x20;" (assignment_expression "sVar25 = 0x20" identifier = number_literal) ;) (expression_statement "q = q + 4;" (assignment_expression "q = q + 4" identifier = (binary_expression "q + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar27)" ( (binary_expression "0 < (int)uVar27" number_literal < (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (expression_statement "local_b4 = 0x3ff;" (assignment_expression "local_b4 = 0x3ff" identifier = number_literal) ;) (if_statement "if (pPVar19[4].traits != UndefinedPixelTrait) {\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }" if (parenthesized_expression "(pPVar19[4].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar19[4].traits != UndefinedPixelTrait" (field_expression "pPVar19[4].traits" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            local_b4 = 0;\n            if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < p[pPVar19[4].offset]) {\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }" if (parenthesized_expression "(0.0 < p[pPVar19[4].offset])" ( (binary_expression "0.0 < p[pPVar19[4].offset]" number_literal < (subscript_expression "p[pPVar19[4].offset]" identifier [ (field_expression "pPVar19[4].offset" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n              dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }" { (expression_statement "dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(p[pPVar19[4].offset] * (double)DAT_003057bc)" ( (binary_expression "p[pPVar19[4].offset] * (double)DAT_003057bc" (subscript_expression "p[pPVar19[4].offset]" identifier [ (field_expression "pPVar19[4].offset" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" else (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) }) (else_clause "else {\n                local_b4 = 0xffffffff;\n              }" else (compound_statement "{\n                local_b4 = 0xffffffff;\n              }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar24 = (quantum_info->state).pixel;\n            uVar27 = local_74;\n            while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }\n          }" { (expression_statement "uVar24 = (quantum_info->state).pixel;" (assignment_expression "uVar24 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar27 = local_74;" (assignment_expression "uVar27 = local_74" identifier = identifier) ;) (while_statement "while( true ) {\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar28 = sVar25;\n              if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar28;\n              uVar14 = (quantum_info->state).mask[uVar28];\n              cVar7 = (char)sVar25;\n              sVar25 = sVar25 - uVar28;\n              (quantum_info->state).bits = sVar25;\n              uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);\n              (quantum_info->state).pixel = uVar24;\n              if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar27 = quantum_info->depth;\n            }" { (expression_statement "uVar28 = sVar25;" (assignment_expression "uVar28 = sVar25" identifier = identifier) ;) (if_statement "if (local_74 <= sVar25) {\n                uVar28 = local_74;\n              }" if (parenthesized_expression "(local_74 <= sVar25)" ( (binary_expression "local_74 <= sVar25" identifier <= identifier) )) (compound_statement "{\n                uVar28 = local_74;\n              }" { (expression_statement "uVar28 = local_74;" (assignment_expression "uVar28 = local_74" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)local_74;" (assignment_expression "cVar6 = (char)local_74" identifier = (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_74 = local_74 - uVar28;" (assignment_expression "local_74 = local_74 - uVar28" identifier = (binary_expression "local_74 - uVar28" identifier - identifier)) ;) (expression_statement "uVar14 = (quantum_info->state).mask[uVar28];" (assignment_expression "uVar14 = (quantum_info->state).mask[uVar28]" identifier = (subscript_expression "(quantum_info->state).mask[uVar28]" (field_expression "(quantum_info->state).mask" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) [ identifier ])) ;) (expression_statement "cVar7 = (char)sVar25;" (assignment_expression "cVar7 = (char)sVar25" identifier = (cast_expression "(char)sVar25" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "sVar25 = sVar25 - uVar28;" (assignment_expression "sVar25 = sVar25 - uVar28" identifier = (binary_expression "sVar25 - uVar28" identifier - identifier)) ;) (expression_statement "(quantum_info->state).bits = sVar25;" (assignment_expression "(quantum_info->state).bits = sVar25" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar24 = uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar24 | (local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14)" ( (binary_expression "local_b4 >> ((char)uVar27 - cVar6 & 0x1fU) & uVar14" (binary_expression "local_b4 >> ((char)uVar27 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)uVar27 - cVar6 & 0x1fU)" ( (binary_expression "(char)uVar27 - cVar6 & 0x1fU" (binary_expression "(char)uVar27 - cVar6" (cast_expression "(char)uVar27" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "(quantum_info->state).pixel = uVar24;" (assignment_expression "(quantum_info->state).pixel = uVar24" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (sVar25 == 0) {\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }" if (parenthesized_expression "(sVar25 == 0)" ( (binary_expression "sVar25 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar21 = (uchar)(uVar24 >> 0x18);\n                local_ac = (uchar)(uVar24 >> 0x10);\n                local_a4 = (uchar)(uVar24 >> 8);\n                if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }\n                (quantum_info->state).pixel = 0;\n                uVar24 = 0;\n                sVar25 = 0x20;\n                (quantum_info->state).bits = 0x20;\n                q = q + 4;\n              }" { (expression_statement "uVar21 = (uchar)(uVar24 >> 0x18);" (assignment_expression "uVar21 = (uchar)(uVar24 >> 0x18)" identifier = (call_expression "(uchar)(uVar24 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x18)" ( (binary_expression "uVar24 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (uchar)(uVar24 >> 0x10);" (assignment_expression "local_ac = (uchar)(uVar24 >> 0x10)" identifier = (call_expression "(uchar)(uVar24 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 0x10)" ( (binary_expression "uVar24 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (uchar)(uVar24 >> 8);" (assignment_expression "local_a4 = (uchar)(uVar24 >> 8)" identifier = (call_expression "(uchar)(uVar24 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar24 >> 8)" ( (binary_expression "uVar24 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }\n                else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\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                  *q = (uchar)uVar24;\n                  q[3] = uVar21;\n                  q[1] = local_a4;\n                  q[2] = local_ac;\n                }" { (expression_statement "*q = (uchar)uVar24;" (assignment_expression "*q = (uchar)uVar24" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[3] = uVar21;" (assignment_expression "q[3] = uVar21" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[1] = local_a4;" (assignment_expression "q[1] = local_a4" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_ac;" (assignment_expression "q[2] = local_ac" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }" else (compound_statement "{\n                  *q = uVar21;\n                  q[1] = local_ac;\n                  q[2] = local_a4;\n                  q[3] = (uchar)uVar24;\n                }" { (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = local_ac;" (assignment_expression "q[1] = local_ac" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_a4;" (assignment_expression "q[2] = local_a4" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = (uchar)uVar24;" (assignment_expression "q[3] = (uchar)uVar24" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "(quantum_info->state).pixel = 0;" (assignment_expression "(quantum_info->state).pixel = 0" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "sVar25 = 0x20;" (assignment_expression "sVar25 = 0x20" identifier = number_literal) ;) (expression_statement "(quantum_info->state).bits = 0x20;" (assignment_expression "(quantum_info->state).bits = 0x20" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "q = q + 4;" (assignment_expression "q = q + 4" identifier = (binary_expression "q + 4" identifier + number_literal)) ;) })) (if_statement "if ((int)local_74 < 1) break;" if (parenthesized_expression "((int)local_74 < 1)" ( (binary_expression "(int)local_74 < 1" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar27 = quantum_info->depth;" (assignment_expression "uVar27 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) })) })) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad;" (assignment_expression "q = q + quantum_info->pad" identifier = (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (if_statement "if (local_9c == (int)number_pixels) break;" if (parenthesized_expression "(local_9c == (int)number_pixels)" ( (binary_expression "local_9c == (int)number_pixels" identifier == (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "local_74 = quantum_info->depth;" (assignment_expression "local_74 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) })) (return_statement "return;" return ;) })) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (if_statement "if ((int)number_pixels < 1) {\n        return;\n      }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "sVar25 = 10;" (assignment_expression "sVar25 = 10" identifier = number_literal) ;) (do_statement "do {\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      } while( true );" do (compound_statement "{\n        pPVar19 = image->channel_map;\n        if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar24 = (quantum_info->state).bits;\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }\n        if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }\n        if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }\n        if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }\n        if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }\n        iVar26 = iVar26 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad;\n        if (iVar26 == (int)number_pixels) {\n          return;\n        }\n        sVar25 = quantum_info->depth;\n      }" { (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (if_statement "if (p[pPVar19->offset] <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" if (parenthesized_expression "(p[pPVar19->offset] <= 0.0)" ( (binary_expression "p[pPVar19->offset] <= 0.0" (subscript_expression "p[pPVar19->offset]" identifier [ (field_expression "pPVar19->offset" identifier -> field_identifier) ]) <= number_literal) )) (compound_statement "{\n          local_4c = 0;\n        }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" else (compound_statement "{\n          dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" { (expression_statement "dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(p[pPVar19->offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(p[pPVar19->offset] * (double)DAT_003057bc)" ( (binary_expression "p[pPVar19->offset] * (double)DAT_003057bc" (subscript_expression "p[pPVar19->offset]" identifier [ (field_expression "pPVar19->offset" identifier -> field_identifier) ]) * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n            local_4c = 0xffffffff;\n          }" { (expression_statement "local_4c = 0xffffffff;" (assignment_expression "local_4c = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" else (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" identifier = identifier) ;) }) (else_clause "else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" else (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" identifier = identifier) ;) }))) }))) }))) (expression_statement "uVar24 = (quantum_info->state).bits;" (assignment_expression "uVar24 = (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)) ;) (if_statement "if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 8;" (assignment_expression "uVar24 = 8" identifier = number_literal) ;) })) (if_statement "if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }" if (parenthesized_expression "((int)sVar25 < 1)" ( (binary_expression "(int)sVar25 < 1" (cast_expression "(int)sVar25" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar3 = p[pPVar19[1].offset];\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }" { (expression_statement "dVar3 = p[pPVar19[1].offset];" (assignment_expression "dVar3 = p[pPVar19[1].offset]" identifier = (subscript_expression "p[pPVar19[1].offset]" identifier [ (field_expression "pPVar19[1].offset" (subscript_expression "pPVar19[1]" identifier [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00165390;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00165390;" goto statement_identifier ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }" else (compound_statement "{\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165364:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[1].offset];\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }" { (do_statement "do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);" do (compound_statement "{\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }\n            uVar24 = (quantum_info->state).bits;\n          }" { (while_statement "while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165364;\n            }" { (expression_statement "uVar27 = uVar24;" (assignment_expression "uVar27 = uVar24" identifier = identifier) ;) (if_statement "if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }" if (parenthesized_expression "(sVar25 <= uVar24)" ( (binary_expression "sVar25 <= uVar24" identifier <= identifier) )) (compound_statement "{\n                uVar27 = sVar25;\n              }" { (expression_statement "uVar27 = sVar25;" (assignment_expression "uVar27 = sVar25" identifier = identifier) ;) })) (expression_statement "uVar28 = sVar25 - uVar27;" (assignment_expression "uVar28 = sVar25 - uVar27" identifier = (binary_expression "sVar25 - uVar27" identifier - identifier)) ;) (expression_statement "sVar25 = 0;" (assignment_expression "sVar25 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }" if (parenthesized_expression "(-1 < (int)uVar28)" ( (binary_expression "-1 < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                sVar25 = uVar28;\n              }" { (expression_statement "sVar25 = uVar28;" (assignment_expression "sVar25 = uVar28" identifier = identifier) ;) })) (if_statement "if (uVar24 == 8) {\n                *q = '\0';\n              }" if (parenthesized_expression "(uVar24 == 8)" ( (binary_expression "uVar24 == 8" identifier == number_literal) )) (compound_statement "{\n                *q = '\0';\n              }" { (expression_statement "*q = '\0';" (assignment_expression "*q = '\0'" (pointer_expression "*q" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "uVar24 = uVar24 - uVar27;" (assignment_expression "uVar24 = uVar24 - uVar27" identifier = (binary_expression "uVar24 - uVar27" identifier - identifier)) ;) (expression_statement "bVar20 = (byte)sVar25 & 0x1f;" (assignment_expression "bVar20 = (byte)sVar25 & 0x1f" identifier = (binary_expression "(byte)sVar25 & 0x1f" (cast_expression "(byte)sVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20;" (assignment_expression "uVar14 = local_4c >> bVar20 | 0 << 0x20 - bVar20" identifier = (binary_expression "local_4c >> bVar20 | 0 << 0x20 - bVar20" (binary_expression "local_4c >> bVar20" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar20" number_literal << (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }" if (parenthesized_expression "((sVar25 & 0x20) != 0)" ( (binary_expression "(sVar25 & 0x20) != 0" (parenthesized_expression "(sVar25 & 0x20)" ( (binary_expression "sVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }" { (expression_statement "uVar14 = 0 >> ((byte)sVar25 & 0x1f);" (assignment_expression "uVar14 = 0 >> ((byte)sVar25 & 0x1f)" identifier = (binary_expression "0 >> ((byte)sVar25 & 0x1f)" number_literal >> (parenthesized_expression "((byte)sVar25 & 0x1f)" ( (binary_expression "(byte)sVar25 & 0x1f" (cast_expression "(byte)sVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "(quantum_info->state).bits = uVar24;" (assignment_expression "(quantum_info->state).bits = uVar24" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));" (assignment_expression "bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar27 & 0x1f)) & uVar14)" ( (binary_expression "~(-1 << ((byte)uVar27 & 0x1f)) & uVar14" (unary_expression "~(-1 << ((byte)uVar27 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar27 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar27 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar24 & 0x1f)" ( (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }" if (parenthesized_expression "((uVar24 & 0x20) != 0)" ( (binary_expression "(uVar24 & 0x20) != 0" (parenthesized_expression "(uVar24 & 0x20)" ( (binary_expression "uVar24 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar20 = 0;\n              }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) })) (expression_statement "*q = *q | bVar20;" (assignment_expression "*q = *q | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "*q | bVar20" (pointer_expression "*q" * identifier) | identifier)) ;) (if_statement "if (uVar24 != 0) break;" if (parenthesized_expression "(uVar24 != 0)" ( (binary_expression "uVar24 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 8;" (assignment_expression "uVar24 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar28 < 1) goto LAB_00165364;" if (parenthesized_expression "((int)uVar28 < 1)" ( (binary_expression "(int)uVar28 < 1" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00165364;" goto statement_identifier ;)) })) (expression_statement "uVar24 = (quantum_info->state).bits;" (assignment_expression "uVar24 = (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)) ;) }) while (parenthesized_expression "(0 < (int)uVar28)" ( (binary_expression "0 < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00165364:\n          pPVar19 = image->channel_map;" statement_identifier : (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;)) (expression_statement "sVar25 = quantum_info->depth;" (assignment_expression "sVar25 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (expression_statement "dVar3 = p[pPVar19[1].offset];" (assignment_expression "dVar3 = p[pPVar19[1].offset]" identifier = (subscript_expression "p[pPVar19[1].offset]" identifier [ (field_expression "pPVar19[1].offset" (subscript_expression "pPVar19[1]" identifier [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\nLAB_00165e72:\n            local_54 = 0;\n          }" { (labeled_statement "LAB_00165e72:\n            local_54 = 0;" statement_identifier : (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" { (labeled_statement "LAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;" statement_identifier : (if_statement "if (dVar3 <= 0.0) goto LAB_00165e72;" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (goto_statement "goto LAB_00165e72;" goto statement_identifier ;))) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_54 = 0xffffffff;\n            }" { (expression_statement "local_54 = 0xffffffff;" (assignment_expression "local_54 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" else (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_54 = local_34;" (assignment_expression "local_54 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_54 = local_34;" (assignment_expression "local_54 = local_34" identifier = identifier) ;) }))) }))) }))) (if_statement "if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 8;" (assignment_expression "uVar24 = 8" identifier = number_literal) ;) })) }))) (if_statement "if ((int)sVar25 < 1) {\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }" if (parenthesized_expression "((int)sVar25 < 1)" ( (binary_expression "(int)sVar25 < 1" (cast_expression "(int)sVar25" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar3 = p[pPVar19[2].offset];\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }" { (expression_statement "dVar3 = p[pPVar19[2].offset];" (assignment_expression "dVar3 = p[pPVar19[2].offset]" identifier = (subscript_expression "p[pPVar19[2].offset]" identifier [ (field_expression "pPVar19[2].offset" (subscript_expression "pPVar19[2]" identifier [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00165520;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00165520;" goto statement_identifier ;)) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }" else (compound_statement "{\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_001654f4:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n          dVar3 = p[pPVar19[2].offset];\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }\n        }" { (do_statement "do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);" do (compound_statement "{\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }\n            uVar24 = (quantum_info->state).bits;\n          }" { (while_statement "while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_001654f4;\n            }" { (expression_statement "uVar27 = uVar24;" (assignment_expression "uVar27 = uVar24" identifier = identifier) ;) (if_statement "if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }" if (parenthesized_expression "(sVar25 <= uVar24)" ( (binary_expression "sVar25 <= uVar24" identifier <= identifier) )) (compound_statement "{\n                uVar27 = sVar25;\n              }" { (expression_statement "uVar27 = sVar25;" (assignment_expression "uVar27 = sVar25" identifier = identifier) ;) })) (expression_statement "uVar28 = sVar25 - uVar27;" (assignment_expression "uVar28 = sVar25 - uVar27" identifier = (binary_expression "sVar25 - uVar27" identifier - identifier)) ;) (expression_statement "sVar25 = 0;" (assignment_expression "sVar25 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }" if (parenthesized_expression "(-1 < (int)uVar28)" ( (binary_expression "-1 < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                sVar25 = uVar28;\n              }" { (expression_statement "sVar25 = uVar28;" (assignment_expression "sVar25 = uVar28" identifier = identifier) ;) })) (if_statement "if (uVar24 == 8) {\n                *q = '\0';\n              }" if (parenthesized_expression "(uVar24 == 8)" ( (binary_expression "uVar24 == 8" identifier == number_literal) )) (compound_statement "{\n                *q = '\0';\n              }" { (expression_statement "*q = '\0';" (assignment_expression "*q = '\0'" (pointer_expression "*q" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "uVar24 = uVar24 - uVar27;" (assignment_expression "uVar24 = uVar24 - uVar27" identifier = (binary_expression "uVar24 - uVar27" identifier - identifier)) ;) (expression_statement "bVar20 = (byte)sVar25 & 0x1f;" (assignment_expression "bVar20 = (byte)sVar25 & 0x1f" identifier = (binary_expression "(byte)sVar25 & 0x1f" (cast_expression "(byte)sVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20;" (assignment_expression "uVar14 = local_54 >> bVar20 | 0 << 0x20 - bVar20" identifier = (binary_expression "local_54 >> bVar20 | 0 << 0x20 - bVar20" (binary_expression "local_54 >> bVar20" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar20" number_literal << (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }" if (parenthesized_expression "((sVar25 & 0x20) != 0)" ( (binary_expression "(sVar25 & 0x20) != 0" (parenthesized_expression "(sVar25 & 0x20)" ( (binary_expression "sVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }" { (expression_statement "uVar14 = 0 >> ((byte)sVar25 & 0x1f);" (assignment_expression "uVar14 = 0 >> ((byte)sVar25 & 0x1f)" identifier = (binary_expression "0 >> ((byte)sVar25 & 0x1f)" number_literal >> (parenthesized_expression "((byte)sVar25 & 0x1f)" ( (binary_expression "(byte)sVar25 & 0x1f" (cast_expression "(byte)sVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "(quantum_info->state).bits = uVar24;" (assignment_expression "(quantum_info->state).bits = uVar24" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));" (assignment_expression "bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar27 & 0x1f)) & uVar14)" ( (binary_expression "~(-1 << ((byte)uVar27 & 0x1f)) & uVar14" (unary_expression "~(-1 << ((byte)uVar27 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar27 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar27 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar24 & 0x1f)" ( (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }" if (parenthesized_expression "((uVar24 & 0x20) != 0)" ( (binary_expression "(uVar24 & 0x20) != 0" (parenthesized_expression "(uVar24 & 0x20)" ( (binary_expression "uVar24 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar20 = 0;\n              }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) })) (expression_statement "*q = *q | bVar20;" (assignment_expression "*q = *q | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "*q | bVar20" (pointer_expression "*q" * identifier) | identifier)) ;) (if_statement "if (uVar24 != 0) break;" if (parenthesized_expression "(uVar24 != 0)" ( (binary_expression "uVar24 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 8;" (assignment_expression "uVar24 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar28 < 1) goto LAB_001654f4;" if (parenthesized_expression "((int)uVar28 < 1)" ( (binary_expression "(int)uVar28 < 1" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_001654f4;" goto statement_identifier ;)) })) (expression_statement "uVar24 = (quantum_info->state).bits;" (assignment_expression "uVar24 = (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)) ;) }) while (parenthesized_expression "(0 < (int)uVar28)" ( (binary_expression "0 < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_001654f4:\n          pPVar19 = image->channel_map;" statement_identifier : (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;)) (expression_statement "sVar25 = quantum_info->depth;" (assignment_expression "sVar25 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (expression_statement "dVar3 = p[pPVar19[2].offset];" (assignment_expression "dVar3 = p[pPVar19[2].offset]" identifier = (subscript_expression "p[pPVar19[2].offset]" identifier [ (field_expression "pPVar19[2].offset" (subscript_expression "pPVar19[2]" identifier [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\nLAB_00165e52:\n            local_5c = 0;\n          }" { (labeled_statement "LAB_00165e52:\n            local_5c = 0;" statement_identifier : (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" { (labeled_statement "LAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;" statement_identifier : (if_statement "if (dVar3 <= 0.0) goto LAB_00165e52;" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (goto_statement "goto LAB_00165e52;" goto statement_identifier ;))) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_5c = 0xffffffff;\n            }" { (expression_statement "local_5c = 0xffffffff;" (assignment_expression "local_5c = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" else (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_5c = local_34;" (assignment_expression "local_5c = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_5c = local_34;" (assignment_expression "local_5c = local_34" identifier = identifier) ;) }))) }))) }))) (if_statement "if (uVar24 == 0) {\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n            (quantum_info->state).bits = 8;\n            uVar24 = 8;\n          }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 8;" (assignment_expression "uVar24 = 8" identifier = number_literal) ;) })) }))) (if_statement "if (0 < (int)sVar25) {\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }" if (parenthesized_expression "(0 < (int)sVar25)" ( (binary_expression "0 < (int)sVar25" number_literal < (cast_expression "(int)sVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);\nLAB_00165684:\n          pPVar19 = image->channel_map;\n          sVar25 = quantum_info->depth;\n        }" { (do_statement "do {\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          } while (0 < (int)uVar28);" do (compound_statement "{\n            while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }\n            uVar24 = (quantum_info->state).bits;\n          }" { (while_statement "while( true ) {\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar27 = uVar24;\n              if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }\n              uVar28 = sVar25 - uVar27;\n              sVar25 = 0;\n              if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }\n              if (uVar24 == 8) {\n                *q = '\0';\n              }\n              uVar24 = uVar24 - uVar27;\n              bVar20 = (byte)sVar25 & 0x1f;\n              uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;\n              if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }\n              (quantum_info->state).bits = uVar24;\n              bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n              if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }\n              *q = *q | bVar20;\n              if (uVar24 != 0) break;\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n              uVar24 = 8;\n              if ((int)uVar28 < 1) goto LAB_00165684;\n            }" { (expression_statement "uVar27 = uVar24;" (assignment_expression "uVar27 = uVar24" identifier = identifier) ;) (if_statement "if (sVar25 <= uVar24) {\n                uVar27 = sVar25;\n              }" if (parenthesized_expression "(sVar25 <= uVar24)" ( (binary_expression "sVar25 <= uVar24" identifier <= identifier) )) (compound_statement "{\n                uVar27 = sVar25;\n              }" { (expression_statement "uVar27 = sVar25;" (assignment_expression "uVar27 = sVar25" identifier = identifier) ;) })) (expression_statement "uVar28 = sVar25 - uVar27;" (assignment_expression "uVar28 = sVar25 - uVar27" identifier = (binary_expression "sVar25 - uVar27" identifier - identifier)) ;) (expression_statement "sVar25 = 0;" (assignment_expression "sVar25 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar28) {\n                sVar25 = uVar28;\n              }" if (parenthesized_expression "(-1 < (int)uVar28)" ( (binary_expression "-1 < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                sVar25 = uVar28;\n              }" { (expression_statement "sVar25 = uVar28;" (assignment_expression "sVar25 = uVar28" identifier = identifier) ;) })) (if_statement "if (uVar24 == 8) {\n                *q = '\0';\n              }" if (parenthesized_expression "(uVar24 == 8)" ( (binary_expression "uVar24 == 8" identifier == number_literal) )) (compound_statement "{\n                *q = '\0';\n              }" { (expression_statement "*q = '\0';" (assignment_expression "*q = '\0'" (pointer_expression "*q" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "uVar24 = uVar24 - uVar27;" (assignment_expression "uVar24 = uVar24 - uVar27" identifier = (binary_expression "uVar24 - uVar27" identifier - identifier)) ;) (expression_statement "bVar20 = (byte)sVar25 & 0x1f;" (assignment_expression "bVar20 = (byte)sVar25 & 0x1f" identifier = (binary_expression "(byte)sVar25 & 0x1f" (cast_expression "(byte)sVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20;" (assignment_expression "uVar14 = local_5c >> bVar20 | 0 << 0x20 - bVar20" identifier = (binary_expression "local_5c >> bVar20 | 0 << 0x20 - bVar20" (binary_expression "local_5c >> bVar20" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar20" number_literal << (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((sVar25 & 0x20) != 0) {\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }" if (parenthesized_expression "((sVar25 & 0x20) != 0)" ( (binary_expression "(sVar25 & 0x20) != 0" (parenthesized_expression "(sVar25 & 0x20)" ( (binary_expression "sVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n              }" { (expression_statement "uVar14 = 0 >> ((byte)sVar25 & 0x1f);" (assignment_expression "uVar14 = 0 >> ((byte)sVar25 & 0x1f)" identifier = (binary_expression "0 >> ((byte)sVar25 & 0x1f)" number_literal >> (parenthesized_expression "((byte)sVar25 & 0x1f)" ( (binary_expression "(byte)sVar25 & 0x1f" (cast_expression "(byte)sVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "(quantum_info->state).bits = uVar24;" (assignment_expression "(quantum_info->state).bits = uVar24" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));" (assignment_expression "bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar27 & 0x1f)) & uVar14)" ( (binary_expression "~(-1 << ((byte)uVar27 & 0x1f)) & uVar14" (unary_expression "~(-1 << ((byte)uVar27 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar27 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar27 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar24 & 0x1f)" ( (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar24 & 0x20) != 0) {\n                bVar20 = 0;\n              }" if (parenthesized_expression "((uVar24 & 0x20) != 0)" ( (binary_expression "(uVar24 & 0x20) != 0" (parenthesized_expression "(uVar24 & 0x20)" ( (binary_expression "uVar24 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar20 = 0;\n              }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) })) (expression_statement "*q = *q | bVar20;" (assignment_expression "*q = *q | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "*q | bVar20" (pointer_expression "*q" * identifier) | identifier)) ;) (if_statement "if (uVar24 != 0) break;" if (parenthesized_expression "(uVar24 != 0)" ( (binary_expression "uVar24 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 8;" (assignment_expression "uVar24 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar28 < 1) goto LAB_00165684;" if (parenthesized_expression "((int)uVar28 < 1)" ( (binary_expression "(int)uVar28 < 1" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00165684;" goto statement_identifier ;)) })) (expression_statement "uVar24 = (quantum_info->state).bits;" (assignment_expression "uVar24 = (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)) ;) }) while (parenthesized_expression "(0 < (int)uVar28)" ( (binary_expression "0 < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00165684:\n          pPVar19 = image->channel_map;" statement_identifier : (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;)) (expression_statement "sVar25 = quantum_info->depth;" (assignment_expression "sVar25 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) })) (if_statement "if (pPVar19[4].traits == UndefinedPixelTrait) {\n          local_44 = 0x3ff;\n        }\n        else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "(pPVar19[4].traits == UndefinedPixelTrait)" ( (binary_expression "pPVar19[4].traits == UndefinedPixelTrait" (field_expression "pPVar19[4].traits" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) == identifier) )) (compound_statement "{\n          local_44 = 0x3ff;\n        }" { (expression_statement "local_44 = 0x3ff;" (assignment_expression "local_44 = 0x3ff" identifier = number_literal) ;) }) (else_clause "else if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }" else (if_statement "if (p[pPVar19[4].offset] <= 0.0) {\n          local_44 = 0;\n        }\n        else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "(p[pPVar19[4].offset] <= 0.0)" ( (binary_expression "p[pPVar19[4].offset] <= 0.0" (subscript_expression "p[pPVar19[4].offset]" identifier [ (field_expression "pPVar19[4].offset" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) ]) <= number_literal) )) (compound_statement "{\n          local_44 = 0;\n        }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n          dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }\n        }" { (expression_statement "dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(p[pPVar19[4].offset] * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(p[pPVar19[4].offset] * (double)DAT_003057bc)" ( (binary_expression "p[pPVar19[4].offset] * (double)DAT_003057bc" (subscript_expression "p[pPVar19[4].offset]" identifier [ (field_expression "pPVar19[4].offset" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }\n          else {\n            local_44 = 0xffffffff;\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_44 = local_34;\n            }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_44 = local_34;" (assignment_expression "local_44 = local_34" identifier = identifier) ;) }) (else_clause "else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }" else (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_44 = local_34;\n            }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_44 = local_34;" (assignment_expression "local_44 = local_34" identifier = identifier) ;) }))) }) (else_clause "else {\n            local_44 = 0xffffffff;\n          }" else (compound_statement "{\n            local_44 = 0xffffffff;\n          }" { (expression_statement "local_44 = 0xffffffff;" (assignment_expression "local_44 = 0xffffffff" identifier = number_literal) ;) }))) }))))) (if_statement "if (uVar24 == 0) {\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n          (quantum_info->state).bits = 8;\n          uVar24 = 8;\n        }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar24 = 8;" (assignment_expression "uVar24 = 8" identifier = number_literal) ;) })) (if_statement "if (0 < (int)sVar25) {\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }" if (parenthesized_expression "(0 < (int)sVar25)" ( (binary_expression "0 < (int)sVar25" number_literal < (cast_expression "(int)sVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }\n        }" { (while_statement "while( true ) {\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar27 = uVar24;\n            if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }\n            uVar28 = sVar25 - uVar27;\n            sVar25 = 0;\n            if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }\n            if (uVar24 == 8) {\n              *q = 0;\n            }\n            uVar24 = uVar24 - uVar27;\n            (quantum_info->state).bits = uVar24;\n            bVar20 = (byte)sVar25 & 0x1f;\n            uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;\n            if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }\n            bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));\n            if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }\n            *q = *q | bVar20;\n            if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }\n            if ((int)uVar28 < 1) break;\n            uVar24 = (quantum_info->state).bits;\n          }" { (expression_statement "uVar27 = uVar24;" (assignment_expression "uVar27 = uVar24" identifier = identifier) ;) (if_statement "if (sVar25 <= uVar24) {\n              uVar27 = sVar25;\n            }" if (parenthesized_expression "(sVar25 <= uVar24)" ( (binary_expression "sVar25 <= uVar24" identifier <= identifier) )) (compound_statement "{\n              uVar27 = sVar25;\n            }" { (expression_statement "uVar27 = sVar25;" (assignment_expression "uVar27 = sVar25" identifier = identifier) ;) })) (expression_statement "uVar28 = sVar25 - uVar27;" (assignment_expression "uVar28 = sVar25 - uVar27" identifier = (binary_expression "sVar25 - uVar27" identifier - identifier)) ;) (expression_statement "sVar25 = 0;" (assignment_expression "sVar25 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar28) {\n              sVar25 = uVar28;\n            }" if (parenthesized_expression "(-1 < (int)uVar28)" ( (binary_expression "-1 < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              sVar25 = uVar28;\n            }" { (expression_statement "sVar25 = uVar28;" (assignment_expression "sVar25 = uVar28" identifier = identifier) ;) })) (if_statement "if (uVar24 == 8) {\n              *q = 0;\n            }" if (parenthesized_expression "(uVar24 == 8)" ( (binary_expression "uVar24 == 8" identifier == number_literal) )) (compound_statement "{\n              *q = 0;\n            }" { (expression_statement "*q = 0;" (assignment_expression "*q = 0" (pointer_expression "*q" * identifier) = number_literal) ;) })) (expression_statement "uVar24 = uVar24 - uVar27;" (assignment_expression "uVar24 = uVar24 - uVar27" identifier = (binary_expression "uVar24 - uVar27" identifier - identifier)) ;) (expression_statement "(quantum_info->state).bits = uVar24;" (assignment_expression "(quantum_info->state).bits = uVar24" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar20 = (byte)sVar25 & 0x1f;" (assignment_expression "bVar20 = (byte)sVar25 & 0x1f" identifier = (binary_expression "(byte)sVar25 & 0x1f" (cast_expression "(byte)sVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20;" (assignment_expression "uVar14 = local_44 >> bVar20 | 0 << 0x20 - bVar20" identifier = (binary_expression "local_44 >> bVar20 | 0 << 0x20 - bVar20" (binary_expression "local_44 >> bVar20" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar20" number_literal << (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((sVar25 & 0x20) != 0) {\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }" if (parenthesized_expression "((sVar25 & 0x20) != 0)" ( (binary_expression "(sVar25 & 0x20) != 0" (parenthesized_expression "(sVar25 & 0x20)" ( (binary_expression "sVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              uVar14 = 0 >> ((byte)sVar25 & 0x1f);\n            }" { (expression_statement "uVar14 = 0 >> ((byte)sVar25 & 0x1f);" (assignment_expression "uVar14 = 0 >> ((byte)sVar25 & 0x1f)" identifier = (binary_expression "0 >> ((byte)sVar25 & 0x1f)" number_literal >> (parenthesized_expression "((byte)sVar25 & 0x1f)" ( (binary_expression "(byte)sVar25 & 0x1f" (cast_expression "(byte)sVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f));" (assignment_expression "bVar20 = (byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar27 & 0x1f)) & uVar14) << ((byte)uVar24 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar27 & 0x1f)) & uVar14)" ( (binary_expression "~(-1 << ((byte)uVar27 & 0x1f)) & uVar14" (unary_expression "~(-1 << ((byte)uVar27 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar27 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar27 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar24 & 0x1f)" ( (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar24 & 0x20) != 0) {\n              bVar20 = 0;\n            }" if (parenthesized_expression "((uVar24 & 0x20) != 0)" ( (binary_expression "(uVar24 & 0x20) != 0" (parenthesized_expression "(uVar24 & 0x20)" ( (binary_expression "uVar24 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              bVar20 = 0;\n            }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) })) (expression_statement "*q = *q | bVar20;" (assignment_expression "*q = *q | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "*q | bVar20" (pointer_expression "*q" * identifier) | identifier)) ;) (if_statement "if (uVar24 == 0) {\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n              q = q + 1;\n              (quantum_info->state).bits = 8;\n            }" { (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (if_statement "if ((int)uVar28 < 1) break;" if (parenthesized_expression "((int)uVar28 < 1)" ( (binary_expression "(int)uVar28 < 1" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar24 = (quantum_info->state).bits;" (assignment_expression "uVar24 = (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 "iVar26 = iVar26 + 1;" (assignment_expression "iVar26 = iVar26 + 1" identifier = (binary_expression "iVar26 + 1" identifier + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad;" (assignment_expression "q = q + quantum_info->pad" identifier = (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (if_statement "if (iVar26 == (int)number_pixels) {\n          return;\n        }" if (parenthesized_expression "(iVar26 == (int)number_pixels)" ( (binary_expression "iVar26 == (int)number_pixels" identifier == (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "sVar25 = quantum_info->depth;" (assignment_expression "sVar25 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_001642d0:\n    local_7c = 0;" statement_identifier : (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;)) (expression_statement "iStack_78 = 0;" (assignment_expression "iStack_78 = 0" identifier = number_literal) ;) (if_statement "if (uVar24 == 0) goto LAB_00163bfb;" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00163bfb;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar24 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar24 != 0x40) goto LAB_001642d0;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n  }" else (compound_statement "{\n    if (uVar24 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar24 != 0x40) goto LAB_001642d0;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }\n  }" { (if_statement "if (uVar24 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(uVar24 == 0x20)" ( (binary_expression "uVar24 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );\n    }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\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 ((int)number_pixels < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);\n        return;\n      }" { (if_statement "if ((int)number_pixels < 1) {\n          return;\n        }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        } while (local_b4 != (int)number_pixels);" do (compound_statement "{\n          fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          uVar18 = (uchar)((uint)fVar4 >> 0x18);\n          uVar9 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }\n          fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;\n          uVar21 = (uchar)((uint)fVar4 >> 8);\n          fVar29 = (float)((uint)fVar4 >> 0x18);\n          uVar18 = (uchar)((uint)fVar4 >> 0x10);\n          if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }\n          q[0xf] = SUB41(fVar29,0);\n          local_b4 = local_b4 + 1;\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 0x10;\n        }" { (expression_statement "fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum;" (assignment_expression "fVar4 = (float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum" identifier = (binary_expression "(float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale\n                  + (float)quantum_info->minimum" (binary_expression "(float)p[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale" (cast_expression "(float)p[image->channel_map->offset]" ( (type_descriptor "float" primitive_type) ) (subscript_expression "p[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ])) * (cast_expression "(float)(quantum_info->state).inverse_scale" ( (type_descriptor "float" primitive_type) ) (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier))) + (cast_expression "(float)quantum_info->minimum" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->minimum" identifier -> field_identifier)))) ;) (expression_statement "uVar21 = (uchar)((uint)fVar4 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)fVar4 >> 8)" identifier = (call_expression "(uchar)((uint)fVar4 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (uchar)((uint)fVar4 >> 0x10);" (assignment_expression "uVar9 = (uchar)((uint)fVar4 >> 0x10)" identifier = (call_expression "(uchar)((uint)fVar4 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (uchar)((uint)fVar4 >> 0x18);" (assignment_expression "uVar18 = (uchar)((uint)fVar4 >> 0x18)" identifier = (call_expression "(uchar)((uint)fVar4 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }\n          else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\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            *q = SUB41(fVar4,0);\n            q[1] = uVar21;\n            q[2] = uVar9;\n            q[3] = uVar18;\n          }" { (expression_statement "*q = SUB41(fVar4,0);" (assignment_expression "*q = SUB41(fVar4,0)" (pointer_expression "*q" * identifier) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "q[1] = uVar21;" (assignment_expression "q[1] = uVar21" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar9;" (assignment_expression "q[2] = uVar9" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = uVar18;" (assignment_expression "q[3] = uVar18" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            q[1] = uVar9;\n            *q = uVar18;\n            q[2] = uVar21;\n            q[3] = SUB41(fVar4,0);\n          }" { (expression_statement "q[1] = uVar9;" (assignment_expression "q[1] = uVar9" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*q = uVar18;" (assignment_expression "*q = uVar18" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[2] = uVar21;" (assignment_expression "q[2] = uVar21" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = SUB41(fVar4,0);" (assignment_expression "q[3] = SUB41(fVar4,0)" (subscript_expression "q[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;" (assignment_expression "fVar4 = (float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum" identifier = (binary_expression "(float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum" (binary_expression "(float)p[image->channel_map[1].offset] *\n                  (float)(quantum_info->state).inverse_scale" (cast_expression "(float)p[image->channel_map[1].offset]" ( (type_descriptor "float" primitive_type) ) (subscript_expression "p[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) * (cast_expression "(float)(quantum_info->state).inverse_scale" ( (type_descriptor "float" primitive_type) ) (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier))) + (cast_expression "(float)quantum_info->minimum" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->minimum" identifier -> field_identifier)))) ;) (expression_statement "uVar21 = (uchar)((uint)fVar4 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)fVar4 >> 8)" identifier = (call_expression "(uchar)((uint)fVar4 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (uchar)((uint)fVar4 >> 0x10);" (assignment_expression "uVar9 = (uchar)((uint)fVar4 >> 0x10)" identifier = (call_expression "(uchar)((uint)fVar4 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (uchar)((uint)fVar4 >> 0x18);" (assignment_expression "uVar18 = (uchar)((uint)fVar4 >> 0x18)" identifier = (call_expression "(uchar)((uint)fVar4 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }\n          else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\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            q[4] = SUB41(fVar4,0);\n            q[6] = uVar9;\n            q[5] = uVar21;\n            q[7] = uVar18;\n          }" { (expression_statement "q[4] = SUB41(fVar4,0);" (assignment_expression "q[4] = SUB41(fVar4,0)" (subscript_expression "q[4]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "q[6] = uVar9;" (assignment_expression "q[6] = uVar9" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[5] = uVar21;" (assignment_expression "q[5] = uVar21" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = uVar18;" (assignment_expression "q[7] = uVar18" (subscript_expression "q[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            q[5] = uVar9;\n            q[4] = uVar18;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar4,0);\n          }" { (expression_statement "q[5] = uVar9;" (assignment_expression "q[5] = uVar9" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[4] = uVar18;" (assignment_expression "q[4] = uVar18" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar21;" (assignment_expression "q[6] = uVar21" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = SUB41(fVar4,0);" (assignment_expression "q[7] = SUB41(fVar4,0)" (subscript_expression "q[7]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;" (assignment_expression "fVar4 = (float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum" identifier = (binary_expression "(float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum" (binary_expression "(float)p[image->channel_map[2].offset] *\n                  (float)(quantum_info->state).inverse_scale" (cast_expression "(float)p[image->channel_map[2].offset]" ( (type_descriptor "float" primitive_type) ) (subscript_expression "p[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) * (cast_expression "(float)(quantum_info->state).inverse_scale" ( (type_descriptor "float" primitive_type) ) (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier))) + (cast_expression "(float)quantum_info->minimum" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->minimum" identifier -> field_identifier)))) ;) (expression_statement "uVar21 = (uchar)((uint)fVar4 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)fVar4 >> 8)" identifier = (call_expression "(uchar)((uint)fVar4 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (uchar)((uint)fVar4 >> 0x18);" (assignment_expression "uVar18 = (uchar)((uint)fVar4 >> 0x18)" identifier = (call_expression "(uchar)((uint)fVar4 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (uchar)((uint)fVar4 >> 0x10);" (assignment_expression "uVar9 = (uchar)((uint)fVar4 >> 0x10)" identifier = (call_expression "(uchar)((uint)fVar4 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }\n          else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\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            q[8] = SUB41(fVar4,0);\n            q[10] = uVar9;\n            q[9] = uVar21;\n            q[0xb] = uVar18;\n          }" { (expression_statement "q[8] = SUB41(fVar4,0);" (assignment_expression "q[8] = SUB41(fVar4,0)" (subscript_expression "q[8]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "q[10] = uVar9;" (assignment_expression "q[10] = uVar9" (subscript_expression "q[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[9] = uVar21;" (assignment_expression "q[9] = uVar21" (subscript_expression "q[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xb] = uVar18;" (assignment_expression "q[0xb] = uVar18" (subscript_expression "q[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            q[10] = uVar21;\n            q[8] = uVar18;\n            q[9] = uVar9;\n            q[0xb] = SUB41(fVar4,0);\n          }" { (expression_statement "q[10] = uVar21;" (assignment_expression "q[10] = uVar21" (subscript_expression "q[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[8] = uVar18;" (assignment_expression "q[8] = uVar18" (subscript_expression "q[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[9] = uVar9;" (assignment_expression "q[9] = uVar9" (subscript_expression "q[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xb] = SUB41(fVar4,0);" (assignment_expression "q[0xb] = SUB41(fVar4,0)" (subscript_expression "q[0xb]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = fVar1;" (assignment_expression "fVar4 = fVar1" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }" if (parenthesized_expression "(image->channel_map[4].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits != UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            fVar4 = (float)p[image->channel_map[4].offset];\n          }" { (expression_statement "fVar4 = (float)p[image->channel_map[4].offset];" (assignment_expression "fVar4 = (float)p[image->channel_map[4].offset]" identifier = (cast_expression "(float)p[image->channel_map[4].offset]" ( (type_descriptor "float" primitive_type) ) (subscript_expression "p[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]))) ;) })) (expression_statement "fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;" (assignment_expression "fVar4 = fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum" identifier = (binary_expression "fVar4 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum" (binary_expression "fVar4 * (float)(quantum_info->state).inverse_scale" identifier * (cast_expression "(float)(quantum_info->state).inverse_scale" ( (type_descriptor "float" primitive_type) ) (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier))) + (cast_expression "(float)quantum_info->minimum" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->minimum" identifier -> field_identifier)))) ;) (expression_statement "uVar21 = (uchar)((uint)fVar4 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)fVar4 >> 8)" identifier = (call_expression "(uchar)((uint)fVar4 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "fVar29 = (float)((uint)fVar4 >> 0x18);" (assignment_expression "fVar29 = (float)((uint)fVar4 >> 0x18)" identifier = (cast_expression "(float)((uint)fVar4 >> 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (uchar)((uint)fVar4 >> 0x10);" (assignment_expression "uVar18 = (uchar)((uint)fVar4 >> 0x10)" identifier = (call_expression "(uchar)((uint)fVar4 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }\n          else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\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            q[0xc] = SUB41(fVar4,0);\n            q[0xe] = uVar18;\n            q[0xd] = uVar21;\n          }" { (expression_statement "q[0xc] = SUB41(fVar4,0);" (assignment_expression "q[0xc] = SUB41(fVar4,0)" (subscript_expression "q[0xc]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "q[0xe] = uVar18;" (assignment_expression "q[0xe] = uVar18" (subscript_expression "q[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xd] = uVar21;" (assignment_expression "q[0xd] = uVar21" (subscript_expression "q[0xd]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }" else (compound_statement "{\n            q[0xe] = uVar21;\n            q[0xc] = (uchar)((uint)fVar4 >> 0x18);\n            q[0xd] = uVar18;\n            fVar29 = fVar4;\n          }" { (expression_statement "q[0xe] = uVar21;" (assignment_expression "q[0xe] = uVar21" (subscript_expression "q[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xc] = (uchar)((uint)fVar4 >> 0x18);" (assignment_expression "q[0xc] = (uchar)((uint)fVar4 >> 0x18)" (subscript_expression "q[0xc]" identifier [ number_literal ]) = (call_expression "(uchar)((uint)fVar4 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "q[0xd] = uVar18;" (assignment_expression "q[0xd] = uVar18" (subscript_expression "q[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "fVar29 = fVar4;" (assignment_expression "fVar29 = fVar4" identifier = identifier) ;) }))) (expression_statement "q[0xf] = SUB41(fVar29,0);" (assignment_expression "q[0xf] = SUB41(fVar29,0)" (subscript_expression "q[0xf]" identifier [ number_literal ]) = (call_expression "SUB41(fVar29,0)" identifier (argument_list "(fVar29,0)" ( identifier , number_literal )))) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 0x10;" (assignment_expression "q = q + quantum_info->pad + 0x10" identifier = (binary_expression "q + quantum_info->pad + 0x10" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) }) while (parenthesized_expression "(local_b4 != (int)number_pixels)" ( (binary_expression "local_b4 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)number_pixels < 1) {\n        return;\n      }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      } while( true );" do (compound_statement "{\n        if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }\n        if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }\n        if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }\n        if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }\n        q[0xf] = uVar8;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        if (local_b4 == (int)number_pixels) {\n          return;\n        }\n      }" { (if_statement "if (p[image->channel_map[2].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }" if (parenthesized_expression "(p[image->channel_map[2].offset] <= 0.0)" ( (binary_expression "p[image->channel_map[2].offset] <= 0.0" (subscript_expression "p[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) <= number_literal) )) (compound_statement "{\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          uVar9 = '\0';\n          uVar8 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164d14;\nLAB_00164af3:\n          q[1] = uVar9;\n          *q = uVar8;\n          q[2] = uVar23;\n          q[3] = (uchar)local_34;\n        }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_34._0_1_ = '\0';" (assignment_expression "local_34._0_1_ = '\0'" (field_expression "local_34._0_1_" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar18 = '\0';" (assignment_expression "uVar18 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar23 = '\0';" (assignment_expression "uVar23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar9 = '\0';" (assignment_expression "uVar9 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar8 = '\0';" (assignment_expression "uVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (quantum_info->endian == LSBEndian) goto LAB_00164d14;" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_00164d14;" goto statement_identifier ;)) (labeled_statement "LAB_00164af3:\n          q[1] = uVar9;" statement_identifier : (expression_statement "q[1] = uVar9;" (assignment_expression "q[1] = uVar9" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "*q = uVar8;" (assignment_expression "*q = uVar8" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[2] = uVar23;" (assignment_expression "q[2] = uVar23" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = (uchar)local_34;" (assignment_expression "q[3] = (uchar)local_34" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }" else (compound_statement "{\n          dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164af3;\nLAB_00164d14:\n          *q = uVar21;\n          q[1] = uVar18;\n          q[2] = uVar9;\n          q[3] = uVar8;\n        }" { (expression_statement "dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148;" (assignment_expression "dVar3 = p[image->channel_map[2].offset] * (double)DAT_002e8148" identifier = (binary_expression "p[image->channel_map[2].offset] * (double)DAT_002e8148" (subscript_expression "p[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(dVar5 <= dVar3)" ( (binary_expression "dVar5 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            uVar23 = 0xff;\n            uVar9 = 0xff;\n            uVar8 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar23 = 0xff;" (assignment_expression "uVar23 = 0xff" identifier = number_literal) ;) (expression_statement "uVar9 = 0xff;" (assignment_expression "uVar9 = 0xff" identifier = number_literal) ;) (expression_statement "uVar8 = 0xff;" (assignment_expression "uVar8 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (uchar)lVar2;" (assignment_expression "local_34._0_1_ = (uchar)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(uchar)lVar2" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = (uchar)((ulonglong)lVar2 >> 0x18);" (assignment_expression "uVar8 = (uchar)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (uchar)((ulonglong)lVar2 >> 0x10);" (assignment_expression "uVar9 = (uchar)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar23 = (uchar)((ulonglong)lVar2 >> 8);" (assignment_expression "uVar23 = (uchar)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "uVar21 = (uchar)local_34;" (assignment_expression "uVar21 = (uchar)local_34" identifier = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = uVar23;" (assignment_expression "uVar18 = uVar23" identifier = identifier) ;) (if_statement "if (quantum_info->endian != LSBEndian) goto LAB_00164af3;" if (parenthesized_expression "(quantum_info->endian != LSBEndian)" ( (binary_expression "quantum_info->endian != LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_00164af3;" goto statement_identifier ;)) (labeled_statement "LAB_00164d14:\n          *q = uVar21;" statement_identifier : (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;)) (expression_statement "q[1] = uVar18;" (assignment_expression "q[1] = uVar18" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar9;" (assignment_expression "q[2] = uVar9" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = uVar8;" (assignment_expression "q[3] = uVar8" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (p[image->channel_map[1].offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }" if (parenthesized_expression "(p[image->channel_map[1].offset] <= 0.0)" ( (binary_expression "p[image->channel_map[1].offset] <= 0.0" (subscript_expression "p[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) <= number_literal) )) (compound_statement "{\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar9 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar18 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;\nLAB_00164b98:\n          q[4] = uVar23;\n          q[5] = uVar8;\n          q[6] = uVar22;\n          q[7] = (uchar)local_34;\n        }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_34._0_1_ = '\0';" (assignment_expression "local_34._0_1_ = '\0'" (field_expression "local_34._0_1_" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar9 = '\0';" (assignment_expression "uVar9 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar22 = '\0';" (assignment_expression "uVar22 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar8 = '\0';" (assignment_expression "uVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar18 = '\0';" (assignment_expression "uVar18 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar23 = '\0';" (assignment_expression "uVar23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (quantum_info->endian == LSBEndian) goto LAB_00164ce4;" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_00164ce4;" goto statement_identifier ;)) (labeled_statement "LAB_00164b98:\n          q[4] = uVar23;" statement_identifier : (expression_statement "q[4] = uVar23;" (assignment_expression "q[4] = uVar23" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "q[5] = uVar8;" (assignment_expression "q[5] = uVar8" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar22;" (assignment_expression "q[6] = uVar22" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = (uchar)local_34;" (assignment_expression "q[7] = (uchar)local_34" (subscript_expression "q[7]" identifier [ number_literal ]) = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }" else (compound_statement "{\n          dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar23;\n          uVar9 = uVar22;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164b98;\nLAB_00164ce4:\n          q[4] = uVar21;\n          q[5] = uVar9;\n          q[6] = uVar8;\n          q[7] = uVar18;\n        }" { (expression_statement "dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148;" (assignment_expression "dVar3 = p[image->channel_map[1].offset] * (double)DAT_002e8148" identifier = (binary_expression "p[image->channel_map[1].offset] * (double)DAT_002e8148" (subscript_expression "p[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar22 = 0xff;" (assignment_expression "uVar22 = 0xff" identifier = number_literal) ;) (expression_statement "uVar8 = 0xff;" (assignment_expression "uVar8 = 0xff" identifier = number_literal) ;) (expression_statement "uVar23 = 0xff;" (assignment_expression "uVar23 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (uchar)lVar2;" (assignment_expression "local_34._0_1_ = (uchar)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(uchar)lVar2" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar22 = (uchar)((ulonglong)lVar2 >> 8);" (assignment_expression "uVar22 = (uchar)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);" (assignment_expression "uVar23 = (uchar)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);" (assignment_expression "uVar8 = (uchar)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "uVar21 = (uchar)local_34;" (assignment_expression "uVar21 = (uchar)local_34" identifier = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = uVar23;" (assignment_expression "uVar18 = uVar23" identifier = identifier) ;) (expression_statement "uVar9 = uVar22;" (assignment_expression "uVar9 = uVar22" identifier = identifier) ;) (if_statement "if (quantum_info->endian != LSBEndian) goto LAB_00164b98;" if (parenthesized_expression "(quantum_info->endian != LSBEndian)" ( (binary_expression "quantum_info->endian != LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_00164b98;" goto statement_identifier ;)) (labeled_statement "LAB_00164ce4:\n          q[4] = uVar21;" statement_identifier : (expression_statement "q[4] = uVar21;" (assignment_expression "q[4] = uVar21" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "q[5] = uVar9;" (assignment_expression "q[5] = uVar9" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar8;" (assignment_expression "q[6] = uVar8" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = uVar18;" (assignment_expression "q[7] = uVar18" (subscript_expression "q[7]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (p[image->channel_map->offset] <= 0.0) {\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }\n        else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }" if (parenthesized_expression "(p[image->channel_map->offset] <= 0.0)" ( (binary_expression "p[image->channel_map->offset] <= 0.0" (subscript_expression "p[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]) <= number_literal) )) (compound_statement "{\n          uVar21 = '\0';\n          local_34._0_1_ = '\0';\n          uVar18 = '\0';\n          uVar22 = '\0';\n          uVar8 = '\0';\n          uVar9 = '\0';\n          uVar23 = '\0';\n          if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;\nLAB_00164c3f:\n          q[10] = uVar22;\n          q[8] = uVar23;\n          q[9] = uVar8;\n          q[0xb] = (uchar)local_34;\n        }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_34._0_1_ = '\0';" (assignment_expression "local_34._0_1_ = '\0'" (field_expression "local_34._0_1_" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar18 = '\0';" (assignment_expression "uVar18 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar22 = '\0';" (assignment_expression "uVar22 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar8 = '\0';" (assignment_expression "uVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar9 = '\0';" (assignment_expression "uVar9 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar23 = '\0';" (assignment_expression "uVar23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (quantum_info->endian == LSBEndian) goto LAB_00164cb8;" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_00164cb8;" goto statement_identifier ;)) (labeled_statement "LAB_00164c3f:\n          q[10] = uVar22;" statement_identifier : (expression_statement "q[10] = uVar22;" (assignment_expression "q[10] = uVar22" (subscript_expression "q[10]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "q[8] = uVar23;" (assignment_expression "q[8] = uVar23" (subscript_expression "q[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[9] = uVar8;" (assignment_expression "q[9] = uVar8" (subscript_expression "q[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xb] = (uchar)local_34;" (assignment_expression "q[0xb] = (uchar)local_34" (subscript_expression "q[0xb]" identifier [ number_literal ]) = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }" else (compound_statement "{\n          dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar21 = (uchar)local_34;\n          uVar18 = uVar22;\n          uVar9 = uVar23;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;\nLAB_00164cb8:\n          q[8] = uVar21;\n          q[9] = uVar18;\n          q[10] = uVar8;\n          q[0xb] = uVar9;\n        }" { (expression_statement "dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148;" (assignment_expression "dVar3 = p[image->channel_map->offset] * (double)DAT_002e8148" identifier = (binary_expression "p[image->channel_map->offset] * (double)DAT_002e8148" (subscript_expression "p[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]) * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            uVar22 = 0xff;\n            uVar8 = 0xff;\n            uVar23 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar22 = 0xff;" (assignment_expression "uVar22 = 0xff" identifier = number_literal) ;) (expression_statement "uVar8 = 0xff;" (assignment_expression "uVar8 = 0xff" identifier = number_literal) ;) (expression_statement "uVar23 = 0xff;" (assignment_expression "uVar23 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar22 = (uchar)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (uchar)lVar2;" (assignment_expression "local_34._0_1_ = (uchar)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(uchar)lVar2" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar23 = (uchar)((ulonglong)lVar2 >> 0x18);" (assignment_expression "uVar23 = (uchar)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar8 = (uchar)((ulonglong)lVar2 >> 0x10);" (assignment_expression "uVar8 = (uchar)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar22 = (uchar)((ulonglong)lVar2 >> 8);" (assignment_expression "uVar22 = (uchar)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "uVar21 = (uchar)local_34;" (assignment_expression "uVar21 = (uchar)local_34" identifier = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) (expression_statement "uVar9 = uVar23;" (assignment_expression "uVar9 = uVar23" identifier = identifier) ;) (if_statement "if (quantum_info->endian != LSBEndian) goto LAB_00164c3f;" if (parenthesized_expression "(quantum_info->endian != LSBEndian)" ( (binary_expression "quantum_info->endian != LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_00164c3f;" goto statement_identifier ;)) (labeled_statement "LAB_00164cb8:\n          q[8] = uVar21;" statement_identifier : (expression_statement "q[8] = uVar21;" (assignment_expression "q[8] = uVar21" (subscript_expression "q[8]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "q[9] = uVar18;" (assignment_expression "q[9] = uVar18" (subscript_expression "q[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[10] = uVar8;" (assignment_expression "q[10] = uVar8" (subscript_expression "q[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xb] = uVar9;" (assignment_expression "q[0xb] = uVar9" (subscript_expression "q[0xb]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }\n        else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }" if (parenthesized_expression "(image->channel_map[4].traits == UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits == UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) == identifier) )) (compound_statement "{\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          uVar9 = 0xff;\n          uVar18 = 0xff;\n          uVar21 = 0xff;\n          uVar8 = (uchar)local_34;\n          uVar23 = 0xff;\n          uVar22 = 0xff;\n          if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;\nLAB_00164c8e:\n          uVar8 = uVar21;\n          q[0xc] = (uchar)local_34;\n          q[0xd] = uVar9;\n          q[0xe] = uVar23;\n        }" { (labeled_statement "LAB_00164c70:\n          local_34._0_1_ = 0xff;" statement_identifier : (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;)) (expression_statement "uVar9 = 0xff;" (assignment_expression "uVar9 = 0xff" identifier = number_literal) ;) (expression_statement "uVar18 = 0xff;" (assignment_expression "uVar18 = 0xff" identifier = number_literal) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) (expression_statement "uVar8 = (uchar)local_34;" (assignment_expression "uVar8 = (uchar)local_34" identifier = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar23 = 0xff;" (assignment_expression "uVar23 = 0xff" identifier = number_literal) ;) (expression_statement "uVar22 = 0xff;" (assignment_expression "uVar22 = 0xff" identifier = number_literal) ;) (if_statement "if (quantum_info->endian != LSBEndian) goto LAB_00164a1f;" if (parenthesized_expression "(quantum_info->endian != LSBEndian)" ( (binary_expression "quantum_info->endian != LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_00164a1f;" goto statement_identifier ;)) (labeled_statement "LAB_00164c8e:\n          uVar8 = uVar21;" statement_identifier : (expression_statement "uVar8 = uVar21;" (assignment_expression "uVar8 = uVar21" identifier = identifier) ;)) (expression_statement "q[0xc] = (uchar)local_34;" (assignment_expression "q[0xc] = (uchar)local_34" (subscript_expression "q[0xc]" identifier [ number_literal ]) = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[0xd] = uVar9;" (assignment_expression "q[0xd] = uVar9" (subscript_expression "q[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xe] = uVar23;" (assignment_expression "q[0xe] = uVar23" (subscript_expression "q[0xe]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }" else (compound_statement "{\n          if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }\n          uVar8 = (uchar)local_34;\n          uVar23 = uVar18;\n          uVar22 = uVar9;\n          if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;\nLAB_00164a1f:\n          q[0xd] = uVar18;\n          q[0xc] = uVar21;\n          q[0xe] = uVar22;\n        }" { (if_statement "if (p[image->channel_map[4].offset] <= 0.0) {\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }\n          else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(p[image->channel_map[4].offset] <= 0.0)" ( (binary_expression "p[image->channel_map[4].offset] <= 0.0" (subscript_expression "p[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) <= number_literal) )) (compound_statement "{\n            local_34._0_1_ = '\0';\n            uVar9 = '\0';\n            uVar18 = '\0';\n            uVar21 = '\0';\n          }" { (expression_statement "local_34._0_1_ = '\0';" (assignment_expression "local_34._0_1_ = '\0'" (field_expression "local_34._0_1_" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar9 = '\0';" (assignment_expression "uVar9 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar18 = '\0';" (assignment_expression "uVar18 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (uchar)lVar2;\n            uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);\n            uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);\n            uVar9 = (uchar)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148;" (assignment_expression "dVar3 = p[image->channel_map[4].offset] * (double)DAT_002e8148" identifier = (binary_expression "p[image->channel_map[4].offset] * (double)DAT_002e8148" (subscript_expression "p[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) goto LAB_00164c70;" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (goto_statement "goto LAB_00164c70;" goto statement_identifier ;)) (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (uchar)lVar2;" (assignment_expression "local_34._0_1_ = (uchar)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(uchar)lVar2" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar21 = (uchar)((ulonglong)lVar2 >> 0x18);" (assignment_expression "uVar21 = (uchar)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (uchar)((ulonglong)lVar2 >> 0x10);" (assignment_expression "uVar18 = (uchar)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar9 = (uchar)((ulonglong)lVar2 >> 8);" (assignment_expression "uVar9 = (uchar)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(uchar)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "uVar8 = (uchar)local_34;" (assignment_expression "uVar8 = (uchar)local_34" identifier = (cast_expression "(uchar)local_34" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) (expression_statement "uVar22 = uVar9;" (assignment_expression "uVar22 = uVar9" identifier = identifier) ;) (if_statement "if (quantum_info->endian == LSBEndian) goto LAB_00164c8e;" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_00164c8e;" goto statement_identifier ;)) (labeled_statement "LAB_00164a1f:\n          q[0xd] = uVar18;" statement_identifier : (expression_statement "q[0xd] = uVar18;" (assignment_expression "q[0xd] = uVar18" (subscript_expression "q[0xd]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "q[0xc] = uVar21;" (assignment_expression "q[0xc] = uVar21" (subscript_expression "q[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xe] = uVar22;" (assignment_expression "q[0xe] = uVar22" (subscript_expression "q[0xe]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "q[0xf] = uVar8;" (assignment_expression "q[0xf] = uVar8" (subscript_expression "q[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 0x10;" (assignment_expression "q = q + quantum_info->pad + 0x10" identifier = (binary_expression "q + quantum_info->pad + 0x10" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (if_statement "if (local_b4 == (int)number_pixels) {\n          return;\n        }" if (parenthesized_expression "(local_b4 == (int)number_pixels)" ( (binary_expression "local_b4 == (int)number_pixels" identifier == (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (uVar24 != 0x40) goto LAB_001642d0;" if (parenthesized_expression "(uVar24 != 0x40)" ( (binary_expression "uVar24 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_001642d0;" goto statement_identifier ;)) (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);\n      return;\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      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if ((int)number_pixels < 1) {\n        return;\n      }\n      do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);\n      return;\n    }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = (double)DAT_002df8a8;" (assignment_expression "dVar3 = (double)DAT_002df8a8" identifier = (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if ((int)number_pixels < 1) {\n        return;\n      }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      } while (local_b4 != (int)number_pixels);" do (compound_statement "{\n        dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }\n        dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }\n        dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }\n        dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        uVar21 = local_ac;\n        uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);\n        uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);\n        local_94 = (uchar)((ulonglong)dVar5 >> 0x18);\n        local_8c = (uchar)((ulonglong)dVar5 >> 0x10);\n        local_ac = (uchar)((ulonglong)dVar5 >> 8);\n        if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }\n        q[0x1f] = uVar18;\n        local_b4 = local_b4 + 1;\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x20;\n      }" { (expression_statement "dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;" (assignment_expression "dVar5 = p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum" identifier = (binary_expression "p[image->channel_map->offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum" (binary_expression "p[image->channel_map->offset] * (quantum_info->state).inverse_scale" (subscript_expression "p[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]) * (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "quantum_info->minimum" identifier -> field_identifier))) ;) (expression_statement "uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);" (assignment_expression "uVar21 = (uchar)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);" (assignment_expression "uVar18 = (uchar)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (uchar)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (uchar)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (uchar)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (uchar)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (uchar)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(uchar)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (uchar)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (uchar)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }\n        else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\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          *q = SUB81(dVar5,0);\n          q[4] = uVar18;\n          q[5] = uVar21;\n          q[1] = local_ac;\n          q[2] = local_8c;\n          q[3] = local_94;\n          q[6] = (uchar)local_9c;\n          q[7] = local_a4;\n        }" { (expression_statement "*q = SUB81(dVar5,0);" (assignment_expression "*q = SUB81(dVar5,0)" (pointer_expression "*q" * identifier) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "q[4] = uVar18;" (assignment_expression "q[4] = uVar18" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[5] = uVar21;" (assignment_expression "q[5] = uVar21" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[1] = local_ac;" (assignment_expression "q[1] = local_ac" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = local_8c;" (assignment_expression "q[2] = local_8c" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = local_94;" (assignment_expression "q[3] = local_94" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = (uchar)local_9c;" (assignment_expression "q[6] = (uchar)local_9c" (subscript_expression "q[6]" identifier [ number_literal ]) = (cast_expression "(uchar)local_9c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[7] = local_a4;" (assignment_expression "q[7] = local_a4" (subscript_expression "q[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }" else (compound_statement "{\n          q[2] = uVar21;\n          q[3] = uVar18;\n          q[7] = SUB81(dVar5,0);\n          q[4] = local_94;\n          *q = local_a4;\n          q[5] = local_8c;\n          q[1] = (uchar)local_9c;\n          q[6] = local_ac;\n        }" { (expression_statement "q[2] = uVar21;" (assignment_expression "q[2] = uVar21" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = uVar18;" (assignment_expression "q[3] = uVar18" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = SUB81(dVar5,0);" (assignment_expression "q[7] = SUB81(dVar5,0)" (subscript_expression "q[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "q[4] = local_94;" (assignment_expression "q[4] = local_94" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*q = local_a4;" (assignment_expression "*q = local_a4" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[5] = local_8c;" (assignment_expression "q[5] = local_8c" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[1] = (uchar)local_9c;" (assignment_expression "q[1] = (uchar)local_9c" (subscript_expression "q[1]" identifier [ number_literal ]) = (cast_expression "(uchar)local_9c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[6] = local_ac;" (assignment_expression "q[6] = local_ac" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;" (assignment_expression "dVar5 = p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum" identifier = (binary_expression "p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum" (binary_expression "p[image->channel_map[1].offset] * (quantum_info->state).inverse_scale" (subscript_expression "p[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) * (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "quantum_info->minimum" identifier -> field_identifier))) ;) (expression_statement "uVar21 = (uchar)((ulonglong)dVar5 >> 0x28);" (assignment_expression "uVar21 = (uchar)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (uchar)((ulonglong)dVar5 >> 0x20);" (assignment_expression "uVar18 = (uchar)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (uchar)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (uchar)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (uchar)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (uchar)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (uchar)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(uchar)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (uchar)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (uchar)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }\n        else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\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          q[8] = SUB81(dVar5,0);\n          q[0xc] = uVar18;\n          q[0xd] = uVar21;\n          q[9] = local_ac;\n          q[10] = local_8c;\n          q[0xb] = local_94;\n          q[0xe] = (uchar)local_9c;\n          q[0xf] = local_a4;\n        }" { (expression_statement "q[8] = SUB81(dVar5,0);" (assignment_expression "q[8] = SUB81(dVar5,0)" (subscript_expression "q[8]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "q[0xc] = uVar18;" (assignment_expression "q[0xc] = uVar18" (subscript_expression "q[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xd] = uVar21;" (assignment_expression "q[0xd] = uVar21" (subscript_expression "q[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[9] = local_ac;" (assignment_expression "q[9] = local_ac" (subscript_expression "q[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[10] = local_8c;" (assignment_expression "q[10] = local_8c" (subscript_expression "q[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xb] = local_94;" (assignment_expression "q[0xb] = local_94" (subscript_expression "q[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xe] = (uchar)local_9c;" (assignment_expression "q[0xe] = (uchar)local_9c" (subscript_expression "q[0xe]" identifier [ number_literal ]) = (cast_expression "(uchar)local_9c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[0xf] = local_a4;" (assignment_expression "q[0xf] = local_a4" (subscript_expression "q[0xf]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }" else (compound_statement "{\n          q[10] = uVar21;\n          q[0xb] = uVar18;\n          q[0xf] = SUB81(dVar5,0);\n          q[0xc] = local_94;\n          q[8] = local_a4;\n          q[0xd] = local_8c;\n          q[9] = (uchar)local_9c;\n          q[0xe] = local_ac;\n        }" { (expression_statement "q[10] = uVar21;" (assignment_expression "q[10] = uVar21" (subscript_expression "q[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xb] = uVar18;" (assignment_expression "q[0xb] = uVar18" (subscript_expression "q[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xf] = SUB81(dVar5,0);" (assignment_expression "q[0xf] = SUB81(dVar5,0)" (subscript_expression "q[0xf]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "q[0xc] = local_94;" (assignment_expression "q[0xc] = local_94" (subscript_expression "q[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[8] = local_a4;" (assignment_expression "q[8] = local_a4" (subscript_expression "q[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xd] = local_8c;" (assignment_expression "q[0xd] = local_8c" (subscript_expression "q[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[9] = (uchar)local_9c;" (assignment_expression "q[9] = (uchar)local_9c" (subscript_expression "q[9]" identifier [ number_literal ]) = (cast_expression "(uchar)local_9c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[0xe] = local_ac;" (assignment_expression "q[0xe] = local_ac" (subscript_expression "q[0xe]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;" (assignment_expression "dVar5 = p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum" identifier = (binary_expression "p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +\n                quantum_info->minimum" (binary_expression "p[image->channel_map[2].offset] * (quantum_info->state).inverse_scale" (subscript_expression "p[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) * (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "quantum_info->minimum" identifier -> field_identifier))) ;) (expression_statement "uVar21 = (uchar)((ulonglong)dVar5 >> 0x20);" (assignment_expression "uVar21 = (uchar)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (uchar)((ulonglong)dVar5 >> 0x28);" (assignment_expression "uVar18 = (uchar)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (uchar)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (uchar)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(uchar)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (uchar)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (uchar)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (uchar)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (uchar)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (uchar)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (uchar)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }\n        else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\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          q[0x10] = SUB81(dVar5,0);\n          q[0x14] = uVar21;\n          q[0x11] = local_ac;\n          q[0x12] = local_8c;\n          q[0x13] = local_94;\n          q[0x15] = uVar18;\n          q[0x16] = (uchar)local_9c;\n          q[0x17] = local_a4;\n        }" { (expression_statement "q[0x10] = SUB81(dVar5,0);" (assignment_expression "q[0x10] = SUB81(dVar5,0)" (subscript_expression "q[0x10]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "q[0x14] = uVar21;" (assignment_expression "q[0x14] = uVar21" (subscript_expression "q[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x11] = local_ac;" (assignment_expression "q[0x11] = local_ac" (subscript_expression "q[0x11]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x12] = local_8c;" (assignment_expression "q[0x12] = local_8c" (subscript_expression "q[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x13] = local_94;" (assignment_expression "q[0x13] = local_94" (subscript_expression "q[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x15] = uVar18;" (assignment_expression "q[0x15] = uVar18" (subscript_expression "q[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x16] = (uchar)local_9c;" (assignment_expression "q[0x16] = (uchar)local_9c" (subscript_expression "q[0x16]" identifier [ number_literal ]) = (cast_expression "(uchar)local_9c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[0x17] = local_a4;" (assignment_expression "q[0x17] = local_a4" (subscript_expression "q[0x17]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }" else (compound_statement "{\n          q[0x13] = uVar21;\n          q[0x17] = SUB81(dVar5,0);\n          q[0x10] = local_a4;\n          q[0x11] = (uchar)local_9c;\n          q[0x12] = uVar18;\n          q[0x14] = local_94;\n          q[0x15] = local_8c;\n          q[0x16] = local_ac;\n        }" { (expression_statement "q[0x13] = uVar21;" (assignment_expression "q[0x13] = uVar21" (subscript_expression "q[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x17] = SUB81(dVar5,0);" (assignment_expression "q[0x17] = SUB81(dVar5,0)" (subscript_expression "q[0x17]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "q[0x10] = local_a4;" (assignment_expression "q[0x10] = local_a4" (subscript_expression "q[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x11] = (uchar)local_9c;" (assignment_expression "q[0x11] = (uchar)local_9c" (subscript_expression "q[0x11]" identifier [ number_literal ]) = (cast_expression "(uchar)local_9c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[0x12] = uVar18;" (assignment_expression "q[0x12] = uVar18" (subscript_expression "q[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x14] = local_94;" (assignment_expression "q[0x14] = local_94" (subscript_expression "q[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x15] = local_8c;" (assignment_expression "q[0x15] = local_8c" (subscript_expression "q[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x16] = local_ac;" (assignment_expression "q[0x16] = local_ac" (subscript_expression "q[0x16]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = dVar3;" (assignment_expression "dVar5 = dVar3" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          dVar5 = p[image->channel_map[4].offset];\n        }" if (parenthesized_expression "(image->channel_map[4].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits != UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n          dVar5 = p[image->channel_map[4].offset];\n        }" { (expression_statement "dVar5 = p[image->channel_map[4].offset];" (assignment_expression "dVar5 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) ;) })) (expression_statement "dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum;" (assignment_expression "dVar5 = dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum" identifier = (binary_expression "dVar5 * (quantum_info->state).inverse_scale + quantum_info->minimum" (binary_expression "dVar5 * (quantum_info->state).inverse_scale" identifier * (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "quantum_info->minimum" identifier -> field_identifier))) ;) (expression_statement "uVar18 = (uchar)((ulonglong)dVar5 >> 0x38);" (assignment_expression "uVar18 = (uchar)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = SUB81(dVar5,0);" (assignment_expression "local_ac = SUB81(dVar5,0)" identifier = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "uVar21 = local_ac;" (assignment_expression "uVar21 = local_ac" identifier = identifier) ;) (expression_statement "uVar9 = (uchar)((ulonglong)dVar5 >> 0x20);" (assignment_expression "uVar9 = (uchar)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar8 = (uchar)((ulonglong)dVar5 >> 0x28);" (assignment_expression "uVar8 = (uchar)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (uchar)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(uchar)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (uchar)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (uchar)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (uchar)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (uchar)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (uchar)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (uchar)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(uchar)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }\n        else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\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          q[0x18] = uVar21;\n          q[0x1c] = uVar9;\n          q[0x19] = local_ac;\n          q[0x1a] = local_8c;\n          q[0x1b] = local_94;\n          q[0x1d] = uVar8;\n          q[0x1e] = (uchar)local_9c;\n        }" { (expression_statement "q[0x18] = uVar21;" (assignment_expression "q[0x18] = uVar21" (subscript_expression "q[0x18]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x1c] = uVar9;" (assignment_expression "q[0x1c] = uVar9" (subscript_expression "q[0x1c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x19] = local_ac;" (assignment_expression "q[0x19] = local_ac" (subscript_expression "q[0x19]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x1a] = local_8c;" (assignment_expression "q[0x1a] = local_8c" (subscript_expression "q[0x1a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x1b] = local_94;" (assignment_expression "q[0x1b] = local_94" (subscript_expression "q[0x1b]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x1d] = uVar8;" (assignment_expression "q[0x1d] = uVar8" (subscript_expression "q[0x1d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x1e] = (uchar)local_9c;" (assignment_expression "q[0x1e] = (uchar)local_9c" (subscript_expression "q[0x1e]" identifier [ number_literal ]) = (cast_expression "(uchar)local_9c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }" else (compound_statement "{\n          q[0x1b] = uVar9;\n          q[0x18] = uVar18;\n          q[0x19] = (uchar)local_9c;\n          q[0x1a] = uVar8;\n          q[0x1c] = local_94;\n          q[0x1d] = local_8c;\n          q[0x1e] = local_ac;\n          uVar18 = uVar21;\n        }" { (expression_statement "q[0x1b] = uVar9;" (assignment_expression "q[0x1b] = uVar9" (subscript_expression "q[0x1b]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x18] = uVar18;" (assignment_expression "q[0x18] = uVar18" (subscript_expression "q[0x18]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x19] = (uchar)local_9c;" (assignment_expression "q[0x19] = (uchar)local_9c" (subscript_expression "q[0x19]" identifier [ number_literal ]) = (cast_expression "(uchar)local_9c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[0x1a] = uVar8;" (assignment_expression "q[0x1a] = uVar8" (subscript_expression "q[0x1a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x1c] = local_94;" (assignment_expression "q[0x1c] = local_94" (subscript_expression "q[0x1c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x1d] = local_8c;" (assignment_expression "q[0x1d] = local_8c" (subscript_expression "q[0x1d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0x1e] = local_ac;" (assignment_expression "q[0x1e] = local_ac" (subscript_expression "q[0x1e]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) }))) (expression_statement "q[0x1f] = uVar18;" (assignment_expression "q[0x1f] = uVar18" (subscript_expression "q[0x1f]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 0x20;" (assignment_expression "q = q + quantum_info->pad + 0x20" identifier = (binary_expression "q + quantum_info->pad + 0x20" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) }) while (parenthesized_expression "(local_b4 != (int)number_pixels)" ( (binary_expression "local_b4 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (return_statement "return;" return ;) })) }))) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (if_statement "if (uVar24 < 0x41) {\n    uVar27 = uVar24;\n  }" if (parenthesized_expression "(uVar24 < 0x41)" ( (binary_expression "uVar24 < 0x41" identifier < number_literal) )) (compound_statement "{\n    uVar27 = uVar24;\n  }" { (expression_statement "uVar27 = uVar24;" (assignment_expression "uVar27 = uVar24" identifier = identifier) ;) })) (expression_statement "bVar16 = (byte)(uVar27 - 1);" (assignment_expression "bVar16 = (byte)(uVar27 - 1)" identifier = (call_expression "(byte)(uVar27 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar27 - 1)" ( (binary_expression "uVar27 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar20 = bVar16 & 0x1f;" (assignment_expression "bVar20 = bVar16 & 0x1f" identifier = (binary_expression "bVar16 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar13 = 2 << (bVar16 & 0x1f);" (assignment_expression "uVar13 = 2 << (bVar16 & 0x1f)" identifier = (binary_expression "2 << (bVar16 & 0x1f)" number_literal << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar14 = uVar13;" (assignment_expression "uVar14 = uVar13" identifier = identifier) ;) (expression_statement "uVar28 = 0 << bVar20 | 2U >> 0x20 - bVar20;" (assignment_expression "uVar28 = 0 << bVar20 | 2U >> 0x20 - bVar20" identifier = (binary_expression "0 << bVar20 | 2U >> 0x20 - bVar20" (binary_expression "0 << bVar20" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar20" number_literal >> (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((uVar27 - 1 & 0x20) != 0) {\n    uVar14 = 0;\n    uVar28 = uVar13;\n  }" if (parenthesized_expression "((uVar27 - 1 & 0x20) != 0)" ( (binary_expression "(uVar27 - 1 & 0x20) != 0" (parenthesized_expression "(uVar27 - 1 & 0x20)" ( (binary_expression "uVar27 - 1 & 0x20" (binary_expression "uVar27 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar14 = 0;\n    uVar28 = uVar13;\n  }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "uVar28 = uVar13;" (assignment_expression "uVar28 = uVar13" identifier = identifier) ;) })) (expression_statement "local_7c = uVar14 - 1;" (assignment_expression "local_7c = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "iStack_78 = (uVar28 - 1) + (uint)(uVar14 != 0);" (assignment_expression "iStack_78 = (uVar28 - 1) + (uint)(uVar14 != 0)" identifier = (binary_expression "(uVar28 - 1) + (uint)(uVar14 != 0)" (parenthesized_expression "(uVar28 - 1)" ( (binary_expression "uVar28 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar14 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) ))))) ;) (labeled_statement "LAB_00163bfb:\n  if ((int)number_pixels < 1) {\n    return;\n  }" statement_identifier : (if_statement "if ((int)number_pixels < 1) {\n    return;\n  }" if (parenthesized_expression "((int)number_pixels < 1)" ( (binary_expression "(int)number_pixels < 1" (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (do_statement "do {\n    local_84 = 0;\n    pPVar19 = image->channel_map;\n    if (0.0 < p[pPVar19[2].offset]) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar27 = (quantum_info->state).bits;\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19[1].offset];\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163de4:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19[1].offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19->offset];\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163fac:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19->offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if (0 < (int)uVar24) {\n      do {\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00164174:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n    }\n    if (pPVar19[4].traits == UndefinedPixelTrait) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = p[pPVar19[4].offset];\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if (0 < (int)uVar24) {\n      while( true ) {\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }\n    }\n    local_6c = local_6c + 1;\n    p = p + image->number_channels;\n    q = q + quantum_info->pad;\n    if (local_6c == (int)number_pixels) {\n      return;\n    }\n    uVar24 = quantum_info->depth;\n  } while( true );" do (compound_statement "{\n    local_84 = 0;\n    pPVar19 = image->channel_map;\n    if (0.0 < p[pPVar19[2].offset]) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar27 = (quantum_info->state).bits;\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19[1].offset];\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163de4:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19[1].offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19->offset];\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163fac:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19->offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }\n    if (0 < (int)uVar24) {\n      do {\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00164174:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n    }\n    if (pPVar19[4].traits == UndefinedPixelTrait) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = p[pPVar19[4].offset];\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }\n    if (0 < (int)uVar24) {\n      while( true ) {\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }\n    }\n    local_6c = local_6c + 1;\n    p = p + image->number_channels;\n    q = q + quantum_info->pad;\n    if (local_6c == (int)number_pixels) {\n      return;\n    }\n    uVar24 = quantum_info->depth;\n  }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (if_statement "if (0.0 < p[pPVar19[2].offset]) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" if (parenthesized_expression "(0.0 < p[pPVar19[2].offset])" ( (binary_expression "0.0 < p[pPVar19[2].offset]" number_literal < (subscript_expression "p[pPVar19[2].offset]" identifier [ (field_expression "pPVar19[2].offset" (subscript_expression "pPVar19[2]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * p[pPVar19[2].offset]) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * p[pPVar19[2].offset])" ( (binary_expression "(double)fVar1 * p[pPVar19[2].offset]" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * (subscript_expression "p[pPVar19[2].offset]" identifier [ (field_expression "pPVar19[2].offset" (subscript_expression "pPVar19[2]" identifier [ number_literal ]) . field_identifier) ])) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" else (compound_statement "{\n          local_84 = (longlong)ROUND(dVar3);\n        }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) (expression_statement "uVar27 = (quantum_info->state).bits;" (assignment_expression "uVar27 = (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)) ;) (if_statement "if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) })) (if_statement "if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19[1].offset];\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163de4:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19[1].offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }" if (parenthesized_expression "((int)uVar24 < 1)" ( (binary_expression "(int)uVar24 < 1" (cast_expression "(int)uVar24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar3 = p[pPVar19[1].offset];\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }" { (expression_statement "dVar3 = p[pPVar19[1].offset];" (assignment_expression "dVar3 = p[pPVar19[1].offset]" identifier = (subscript_expression "p[pPVar19[1].offset]" identifier [ (field_expression "pPVar19[1].offset" (subscript_expression "pPVar19[1]" identifier [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00163e10;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00163e10;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163de4:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19[1].offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163de4:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19[1].offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }" { (do_statement "do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);" do (compound_statement "{\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }\n        uVar27 = (quantum_info->state).bits;\n      }" { (while_statement "while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163de4;\n        }" { (expression_statement "uVar28 = uVar27;" (assignment_expression "uVar28 = uVar27" identifier = identifier) ;) (if_statement "if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }" if (parenthesized_expression "(uVar24 <= uVar27)" ( (binary_expression "uVar24 <= uVar27" identifier <= identifier) )) (compound_statement "{\n            uVar28 = uVar24;\n          }" { (expression_statement "uVar28 = uVar24;" (assignment_expression "uVar28 = uVar24" identifier = identifier) ;) })) (expression_statement "uVar14 = uVar24 - uVar28;" (assignment_expression "uVar14 = uVar24 - uVar28" identifier = (binary_expression "uVar24 - uVar28" identifier - identifier)) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }" if (parenthesized_expression "(-1 < (int)uVar14)" ( (binary_expression "-1 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar24 = uVar14;\n          }" { (expression_statement "uVar24 = uVar14;" (assignment_expression "uVar24 = uVar14" identifier = identifier) ;) })) (if_statement "if (uVar27 == 8) {\n            *q = '\0';\n          }" if (parenthesized_expression "(uVar27 == 8)" ( (binary_expression "uVar27 == 8" identifier == number_literal) )) (compound_statement "{\n            *q = '\0';\n          }" { (expression_statement "*q = '\0';" (assignment_expression "*q = '\0'" (pointer_expression "*q" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "uVar27 = uVar27 - uVar28;" (assignment_expression "uVar27 = uVar27 - uVar28" identifier = (binary_expression "uVar27 - uVar28" identifier - identifier)) ;) (expression_statement "bVar20 = (byte)uVar24 & 0x1f;" (assignment_expression "bVar20 = (byte)uVar24 & 0x1f" identifier = (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;" (assignment_expression "uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20" identifier = (binary_expression "(uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20" (binary_expression "(uint)local_84 >> bVar20" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar20" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }" if (parenthesized_expression "((uVar24 & 0x20) != 0)" ( (binary_expression "(uVar24 & 0x20) != 0" (parenthesized_expression "(uVar24 & 0x20)" ( (binary_expression "uVar24 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }" { (expression_statement "uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);" (assignment_expression "uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar24 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar24 & 0x1f)" ( (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "(quantum_info->state).bits = uVar27;" (assignment_expression "(quantum_info->state).bits = uVar27" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));" (assignment_expression "bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar28 & 0x1f)) & uVar13)" ( (binary_expression "~(-1 << ((byte)uVar28 & 0x1f)) & uVar13" (unary_expression "~(-1 << ((byte)uVar28 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar28 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar28 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar28 & 0x1f)" ( (binary_expression "(byte)uVar28 & 0x1f" (cast_expression "(byte)uVar28" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar20 = 0;\n          }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) })) (expression_statement "*q = *q | bVar20;" (assignment_expression "*q = *q | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "*q | bVar20" (pointer_expression "*q" * identifier) | identifier)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_00163de4;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00163de4;" goto statement_identifier ;)) })) (expression_statement "uVar27 = (quantum_info->state).bits;" (assignment_expression "uVar27 = (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)) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00163de4:\n      pPVar19 = image->channel_map;" statement_identifier : (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;)) (expression_statement "uVar24 = quantum_info->depth;" (assignment_expression "uVar24 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (expression_statement "dVar3 = p[pPVar19[1].offset];" (assignment_expression "dVar3 = p[pPVar19[1].offset]" identifier = (subscript_expression "p[pPVar19[1].offset]" identifier [ (field_expression "pPVar19[1].offset" (subscript_expression "pPVar19[1]" identifier [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\n        local_84 = 0;\n      }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00163e10:\n        local_84 = 0;" statement_identifier : (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;)) (if_statement "if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" else (compound_statement "{\n              local_84 = (longlong)ROUND(dVar3);\n            }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) }))) (if_statement "if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) })) }))) (if_statement "if ((int)uVar24 < 1) {\n      dVar3 = p[pPVar19->offset];\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163fac:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19->offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }" if (parenthesized_expression "((int)uVar24 < 1)" ( (binary_expression "(int)uVar24 < 1" (cast_expression "(int)uVar24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar3 = p[pPVar19->offset];\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }" { (expression_statement "dVar3 = p[pPVar19->offset];" (assignment_expression "dVar3 = p[pPVar19->offset]" identifier = (subscript_expression "p[pPVar19->offset]" identifier [ (field_expression "pPVar19->offset" identifier -> field_identifier) ])) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00163fd8;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00163fd8;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163fac:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19->offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00163fac:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n      dVar3 = p[pPVar19->offset];\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }\n    }" { (do_statement "do {\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);" do (compound_statement "{\n        while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }\n        uVar27 = (quantum_info->state).bits;\n      }" { (while_statement "while( true ) {\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar28 = uVar27;\n          if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00163fac;\n        }" { (expression_statement "uVar28 = uVar27;" (assignment_expression "uVar28 = uVar27" identifier = identifier) ;) (if_statement "if (uVar24 <= uVar27) {\n            uVar28 = uVar24;\n          }" if (parenthesized_expression "(uVar24 <= uVar27)" ( (binary_expression "uVar24 <= uVar27" identifier <= identifier) )) (compound_statement "{\n            uVar28 = uVar24;\n          }" { (expression_statement "uVar28 = uVar24;" (assignment_expression "uVar28 = uVar24" identifier = identifier) ;) })) (expression_statement "uVar14 = uVar24 - uVar28;" (assignment_expression "uVar14 = uVar24 - uVar28" identifier = (binary_expression "uVar24 - uVar28" identifier - identifier)) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }" if (parenthesized_expression "(-1 < (int)uVar14)" ( (binary_expression "-1 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar24 = uVar14;\n          }" { (expression_statement "uVar24 = uVar14;" (assignment_expression "uVar24 = uVar14" identifier = identifier) ;) })) (if_statement "if (uVar27 == 8) {\n            *q = '\0';\n          }" if (parenthesized_expression "(uVar27 == 8)" ( (binary_expression "uVar27 == 8" identifier == number_literal) )) (compound_statement "{\n            *q = '\0';\n          }" { (expression_statement "*q = '\0';" (assignment_expression "*q = '\0'" (pointer_expression "*q" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "uVar27 = uVar27 - uVar28;" (assignment_expression "uVar27 = uVar27 - uVar28" identifier = (binary_expression "uVar27 - uVar28" identifier - identifier)) ;) (expression_statement "bVar20 = (byte)uVar24 & 0x1f;" (assignment_expression "bVar20 = (byte)uVar24 & 0x1f" identifier = (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;" (assignment_expression "uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20" identifier = (binary_expression "(uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20" (binary_expression "(uint)local_84 >> bVar20" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar20" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }" if (parenthesized_expression "((uVar24 & 0x20) != 0)" ( (binary_expression "(uVar24 & 0x20) != 0" (parenthesized_expression "(uVar24 & 0x20)" ( (binary_expression "uVar24 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }" { (expression_statement "uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);" (assignment_expression "uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar24 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar24 & 0x1f)" ( (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "(quantum_info->state).bits = uVar27;" (assignment_expression "(quantum_info->state).bits = uVar27" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));" (assignment_expression "bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar28 & 0x1f)) & uVar13)" ( (binary_expression "~(-1 << ((byte)uVar28 & 0x1f)) & uVar13" (unary_expression "~(-1 << ((byte)uVar28 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar28 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar28 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar28 & 0x1f)" ( (binary_expression "(byte)uVar28 & 0x1f" (cast_expression "(byte)uVar28" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar20 = 0;\n          }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) })) (expression_statement "*q = *q | bVar20;" (assignment_expression "*q = *q | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "*q | bVar20" (pointer_expression "*q" * identifier) | identifier)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_00163fac;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00163fac;" goto statement_identifier ;)) })) (expression_statement "uVar27 = (quantum_info->state).bits;" (assignment_expression "uVar27 = (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)) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00163fac:\n      pPVar19 = image->channel_map;" statement_identifier : (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;)) (expression_statement "uVar24 = quantum_info->depth;" (assignment_expression "uVar24 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (expression_statement "dVar3 = p[pPVar19->offset];" (assignment_expression "dVar3 = p[pPVar19->offset]" identifier = (subscript_expression "p[pPVar19->offset]" identifier [ (field_expression "pPVar19->offset" identifier -> field_identifier) ])) ;) (if_statement "if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\n        local_84 = 0;\n      }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00163fd8:\n        local_84 = 0;" statement_identifier : (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;)) (if_statement "if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" else (compound_statement "{\n              local_84 = (longlong)ROUND(dVar3);\n            }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) }))) (if_statement "if (uVar27 == 0) {\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n        (quantum_info->state).bits = 8;\n        uVar27 = 8;\n      }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) })) }))) (if_statement "if (0 < (int)uVar24) {\n      do {\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00164174:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n    }" if (parenthesized_expression "(0 < (int)uVar24)" ( (binary_expression "0 < (int)uVar24" number_literal < (cast_expression "(int)uVar24" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);\nLAB_00164174:\n      pPVar19 = image->channel_map;\n      uVar24 = quantum_info->depth;\n    }" { (do_statement "do {\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      } while (0 < (int)uVar14);" do (compound_statement "{\n        while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }\n        uVar27 = (quantum_info->state).bits;\n      }" { (while_statement "while( true ) {\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar28 = uVar24;\n          if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }\n          uVar14 = uVar24 - uVar28;\n          uVar24 = 0;\n          if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }\n          if (uVar27 == 8) {\n            *q = '\0';\n          }\n          uVar27 = uVar27 - uVar28;\n          bVar20 = (byte)uVar24 & 0x1f;\n          uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n          if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }\n          (quantum_info->state).bits = uVar27;\n          bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n          if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }\n          *q = *q | bVar20;\n          if (uVar27 != 0) break;\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n          uVar27 = 8;\n          if ((int)uVar14 < 1) goto LAB_00164174;\n        }" { (expression_statement "uVar28 = uVar24;" (assignment_expression "uVar28 = uVar24" identifier = identifier) ;) (if_statement "if (uVar27 <= uVar24) {\n            uVar28 = uVar27;\n          }" if (parenthesized_expression "(uVar27 <= uVar24)" ( (binary_expression "uVar27 <= uVar24" identifier <= identifier) )) (compound_statement "{\n            uVar28 = uVar27;\n          }" { (expression_statement "uVar28 = uVar27;" (assignment_expression "uVar28 = uVar27" identifier = identifier) ;) })) (expression_statement "uVar14 = uVar24 - uVar28;" (assignment_expression "uVar14 = uVar24 - uVar28" identifier = (binary_expression "uVar24 - uVar28" identifier - identifier)) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar14) {\n            uVar24 = uVar14;\n          }" if (parenthesized_expression "(-1 < (int)uVar14)" ( (binary_expression "-1 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar24 = uVar14;\n          }" { (expression_statement "uVar24 = uVar14;" (assignment_expression "uVar24 = uVar14" identifier = identifier) ;) })) (if_statement "if (uVar27 == 8) {\n            *q = '\0';\n          }" if (parenthesized_expression "(uVar27 == 8)" ( (binary_expression "uVar27 == 8" identifier == number_literal) )) (compound_statement "{\n            *q = '\0';\n          }" { (expression_statement "*q = '\0';" (assignment_expression "*q = '\0'" (pointer_expression "*q" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "uVar27 = uVar27 - uVar28;" (assignment_expression "uVar27 = uVar27 - uVar28" identifier = (binary_expression "uVar27 - uVar28" identifier - identifier)) ;) (expression_statement "bVar20 = (byte)uVar24 & 0x1f;" (assignment_expression "bVar20 = (byte)uVar24 & 0x1f" identifier = (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;" (assignment_expression "uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20" identifier = (binary_expression "(uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20" (binary_expression "(uint)local_84 >> bVar20" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar20" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((uVar24 & 0x20) != 0) {\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }" if (parenthesized_expression "((uVar24 & 0x20) != 0)" ( (binary_expression "(uVar24 & 0x20) != 0" (parenthesized_expression "(uVar24 & 0x20)" ( (binary_expression "uVar24 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n          }" { (expression_statement "uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);" (assignment_expression "uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar24 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar24 & 0x1f)" ( (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "(quantum_info->state).bits = uVar27;" (assignment_expression "(quantum_info->state).bits = uVar27" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));" (assignment_expression "bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar28 & 0x1f)) & uVar13)" ( (binary_expression "~(-1 << ((byte)uVar28 & 0x1f)) & uVar13" (unary_expression "~(-1 << ((byte)uVar28 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar28 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar28 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar28 & 0x1f)" ( (binary_expression "(byte)uVar28 & 0x1f" (cast_expression "(byte)uVar28" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n            bVar20 = 0;\n          }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar20 = 0;\n          }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) })) (expression_statement "*q = *q | bVar20;" (assignment_expression "*q = *q | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "*q | bVar20" (pointer_expression "*q" * identifier) | identifier)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_00164174;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00164174;" goto statement_identifier ;)) })) (expression_statement "uVar27 = (quantum_info->state).bits;" (assignment_expression "uVar27 = (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)) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00164174:\n      pPVar19 = image->channel_map;" statement_identifier : (expression_statement "pPVar19 = image->channel_map;" (assignment_expression "pPVar19 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;)) (expression_statement "uVar24 = quantum_info->depth;" (assignment_expression "uVar24 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) })) (if_statement "if (pPVar19[4].traits == UndefinedPixelTrait) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = p[pPVar19[4].offset];\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" if (parenthesized_expression "(pPVar19[4].traits == UndefinedPixelTrait)" ( (binary_expression "pPVar19[4].traits == UndefinedPixelTrait" (field_expression "pPVar19[4].traits" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) == identifier) )) (compound_statement "{\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" { (expression_statement "dVar3 = (double)DAT_002df8a8;" (assignment_expression "dVar3 = (double)DAT_002df8a8" identifier = (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);" statement_identifier : (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;)) (if_statement "if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" else (compound_statement "{\n          local_84 = (longlong)ROUND(dVar3);\n        }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) }) (else_clause "else {\n      local_84 = 0;\n      dVar3 = p[pPVar19[4].offset];\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" else (compound_statement "{\n      local_84 = 0;\n      dVar3 = p[pPVar19[4].offset];\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = p[pPVar19[4].offset];" (assignment_expression "dVar3 = p[pPVar19[4].offset]" identifier = (subscript_expression "p[pPVar19[4].offset]" identifier [ (field_expression "pPVar19[4].offset" (subscript_expression "pPVar19[4]" identifier [ number_literal ]) . field_identifier) ])) ;) (if_statement "if (0.0 < dVar3) goto LAB_00164302;" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (goto_statement "goto LAB_00164302;" goto statement_identifier ;)) }))) (if_statement "if (uVar27 == 0) {\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n      (quantum_info->state).bits = 8;\n      uVar27 = 8;\n    }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) })) (if_statement "if (0 < (int)uVar24) {\n      while( true ) {\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }\n    }" if (parenthesized_expression "(0 < (int)uVar24)" ( (binary_expression "0 < (int)uVar24" number_literal < (cast_expression "(int)uVar24" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      while( true ) {\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }\n    }" { (while_statement "while( true ) {\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar28 = uVar27;\n        if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }\n        uVar14 = uVar24 - uVar28;\n        uVar24 = 0;\n        if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }\n        if (uVar27 == 8) {\n          *q = 0;\n        }\n        uVar27 = uVar27 - uVar28;\n        (quantum_info->state).bits = uVar27;\n        bVar20 = (byte)uVar24 & 0x1f;\n        uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;\n        if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }\n        bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));\n        if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }\n        *q = *q | bVar20;\n        if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }\n        if ((int)uVar14 < 1) break;\n        uVar27 = (quantum_info->state).bits;\n      }" { (expression_statement "uVar28 = uVar27;" (assignment_expression "uVar28 = uVar27" identifier = identifier) ;) (if_statement "if (uVar24 <= uVar27) {\n          uVar28 = uVar24;\n        }" if (parenthesized_expression "(uVar24 <= uVar27)" ( (binary_expression "uVar24 <= uVar27" identifier <= identifier) )) (compound_statement "{\n          uVar28 = uVar24;\n        }" { (expression_statement "uVar28 = uVar24;" (assignment_expression "uVar28 = uVar24" identifier = identifier) ;) })) (expression_statement "uVar14 = uVar24 - uVar28;" (assignment_expression "uVar14 = uVar24 - uVar28" identifier = (binary_expression "uVar24 - uVar28" identifier - identifier)) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar14) {\n          uVar24 = uVar14;\n        }" if (parenthesized_expression "(-1 < (int)uVar14)" ( (binary_expression "-1 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar24 = uVar14;\n        }" { (expression_statement "uVar24 = uVar14;" (assignment_expression "uVar24 = uVar14" identifier = identifier) ;) })) (if_statement "if (uVar27 == 8) {\n          *q = 0;\n        }" if (parenthesized_expression "(uVar27 == 8)" ( (binary_expression "uVar27 == 8" identifier == number_literal) )) (compound_statement "{\n          *q = 0;\n        }" { (expression_statement "*q = 0;" (assignment_expression "*q = 0" (pointer_expression "*q" * identifier) = number_literal) ;) })) (expression_statement "uVar27 = uVar27 - uVar28;" (assignment_expression "uVar27 = uVar27 - uVar28" identifier = (binary_expression "uVar27 - uVar28" identifier - identifier)) ;) (expression_statement "(quantum_info->state).bits = uVar27;" (assignment_expression "(quantum_info->state).bits = uVar27" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "bVar20 = (byte)uVar24 & 0x1f;" (assignment_expression "bVar20 = (byte)uVar24 & 0x1f" identifier = (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20;" (assignment_expression "uVar13 = (uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20" identifier = (binary_expression "(uint)local_84 >> bVar20 | local_84._4_4_ << 0x20 - bVar20" (binary_expression "(uint)local_84 >> bVar20" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar20" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar20" number_literal - identifier)))) ;) (if_statement "if ((uVar24 & 0x20) != 0) {\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }" if (parenthesized_expression "((uVar24 & 0x20) != 0)" ( (binary_expression "(uVar24 & 0x20) != 0" (parenthesized_expression "(uVar24 & 0x20)" ( (binary_expression "uVar24 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);\n        }" { (expression_statement "uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f);" (assignment_expression "uVar13 = local_84._4_4_ >> ((byte)uVar24 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar24 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar24 & 0x1f)" ( (binary_expression "(byte)uVar24 & 0x1f" (cast_expression "(byte)uVar24" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f));" (assignment_expression "bVar20 = (byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar28 & 0x1f)) & uVar13) << ((byte)uVar27 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar28 & 0x1f)) & uVar13)" ( (binary_expression "~(-1 << ((byte)uVar28 & 0x1f)) & uVar13" (unary_expression "~(-1 << ((byte)uVar28 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar28 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar28 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar28 & 0x1f)" ( (binary_expression "(byte)uVar28 & 0x1f" (cast_expression "(byte)uVar28" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n          bVar20 = 0;\n        }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          bVar20 = 0;\n        }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) })) (expression_statement "*q = *q | bVar20;" (assignment_expression "*q = *q | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "*q | bVar20" (pointer_expression "*q" * identifier) | identifier)) ;) (if_statement "if (uVar27 == 0) {\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          q = q + 1;\n          (quantum_info->state).bits = 8;\n        }" { (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (if_statement "if ((int)uVar14 < 1) break;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar27 = (quantum_info->state).bits;" (assignment_expression "uVar27 = (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 "local_6c = local_6c + 1;" (assignment_expression "local_6c = local_6c + 1" identifier = (binary_expression "local_6c + 1" identifier + number_literal)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad;" (assignment_expression "q = q + quantum_info->pad" identifier = (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (if_statement "if (local_6c == (int)number_pixels) {\n      return;\n    }" if (parenthesized_expression "(local_6c == (int)number_pixels)" ( (binary_expression "local_6c == (int)number_pixels" identifier == (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "uVar24 = quantum_info->depth;" (assignment_expression "uVar24 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void __regparm2\nFUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)\n\n{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  byte bVar8;\n  byte bVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  byte bVar13;\n  int iVar14;\n  byte bVar15;\n  byte bVar16;\n  byte bVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  float fVar22;\n  uint local_b4;\n  byte local_ac;\n  byte local_a4;\n  int local_9c;\n  byte local_94;\n  byte local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (param_7 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar18 = *param_2;\n  if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }\n  uVar20 = 0;\n  if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }\n  bVar13 = (byte)(uVar20 - 1);\n  bVar15 = bVar13 & 0x1f;\n  uVar10 = 2 << (bVar13 & 0x1f);\n  uVar21 = uVar10;\n  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;\n  if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }\n  local_7c = uVar21 - 1;\n  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);\nLAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );\n}\n\n" (function_definition "void __regparm2\nFUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)\n\n{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  byte bVar8;\n  byte bVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  byte bVar13;\n  int iVar14;\n  byte bVar15;\n  byte bVar16;\n  byte bVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  float fVar22;\n  uint local_b4;\n  byte local_ac;\n  byte local_a4;\n  int local_9c;\n  byte local_94;\n  byte local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (param_7 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar18 = *param_2;\n  if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }\n  uVar20 = 0;\n  if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }\n  bVar13 = (byte)(uVar20 - 1);\n  bVar15 = bVar13 & 0x1f;\n  uVar10 = 2 << (bVar13 & 0x1f);\n  uVar21 = uVar10;\n  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;\n  if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }\n  local_7c = uVar21 - 1;\n  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);\nLAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)" identifier (parameter_list "(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "byte *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  byte bVar8;\n  byte bVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  byte bVar13;\n  int iVar14;\n  byte bVar15;\n  byte bVar16;\n  byte bVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  float fVar22;\n  uint local_b4;\n  byte local_ac;\n  byte local_a4;\n  int local_9c;\n  byte local_94;\n  byte local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (param_7 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar18 = *param_2;\n  if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }\n  uVar20 = 0;\n  if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }\n  bVar13 = (byte)(uVar20 - 1);\n  bVar15 = bVar13 & 0x1f;\n  uVar10 = 2 << (bVar13 & 0x1f);\n  uVar21 = uVar10;\n  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;\n  if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }\n  local_7c = uVar21 - 1;\n  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);\nLAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "float fVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "float fVar22;" primitive_type identifier ;) (declaration "uint local_b4;" type_identifier identifier ;) (declaration "byte local_ac;" type_identifier identifier ;) (declaration "byte local_a4;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "byte local_94;" type_identifier identifier ;) (declaration "byte local_8c;" type_identifier identifier ;) (declaration "undefined8 local_84;" type_identifier identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int iStack_78;" primitive_type identifier ;) (declaration "uint local_74;" type_identifier identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (expression_statement "dVar5 = DAT_002e8160;" (assignment_expression "dVar5 = DAT_002e8160" identifier = identifier) ;) (expression_statement "fVar1 = DAT_002df8a8;" (assignment_expression "fVar1 = DAT_002df8a8" identifier = identifier) ;) (expression_statement "dVar3 = _DAT_002df2e0;" (assignment_expression "dVar3 = _DAT_002df2e0" identifier = identifier) ;) (if_statement "if (param_7 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }" { (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportBGRAQuantum"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }" if (parenthesized_expression "(*(int *)(param_7 + 0x1c) != -0x54535255)" ( (binary_expression "*(int *)(param_7 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_7 + 0x1c)" * (cast_expression "(int *)(param_7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x1c)" ( (binary_expression "param_7 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }" { (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum")" identifier (argument_list "("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum")" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportBGRAQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }" if (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) (compound_statement "{\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }" { (if_statement "if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }" { (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);" do (compound_statement "{\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      }" { (expression_statement "uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));" (assignment_expression "uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" identifier = (call_expression "FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" identifier (argument_list "((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" ( (cast_expression "(float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8))" ( (binary_expression "(longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (binary_expression "(longdouble)dVar3 *\n                                     (longdouble)" (cast_expression "(longdouble)dVar3" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (parenthesized_expression "(longdouble)" ( identifier ))) * (cast_expression "(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) ))) )))) ;) (expression_statement "uVar18 = uVar12 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar12 >> 8 & 0xff" identifier = (binary_expression "uVar12 >> 8 & 0xff" (binary_expression "uVar12 >> 8" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar20 = uVar12;" (assignment_expression "uVar20 = uVar12" identifier = identifier) ;) (if_statement "if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" { (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" identifier = identifier) ;) (expression_statement "uVar18 = uVar12;" (assignment_expression "uVar18 = uVar12" identifier = identifier) ;) })) (expression_statement "*param_6 = (byte)uVar18;" (assignment_expression "*param_6 = (byte)uVar18" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[1] = (byte)uVar20;" (assignment_expression "param_6[1] = (byte)uVar20" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "dVar5 = _DAT_002df2e0;" (assignment_expression "dVar5 = _DAT_002df2e0" identifier = identifier) ;) (expression_statement "uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));" (assignment_expression "uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" identifier = (call_expression "FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" identifier (argument_list "((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" ( (cast_expression "(float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0)" ( (binary_expression "(longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0" (binary_expression "(longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (parenthesized_expression "(longdouble)" ( identifier )) * (cast_expression "(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) * (cast_expression "(longdouble)_DAT_002df2e0" ( (type_descriptor "longdouble" type_identifier) ) identifier)) ))) )))) ;) (expression_statement "uVar18 = uVar12 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar12 >> 8 & 0xff" identifier = (binary_expression "uVar12 >> 8 & 0xff" (binary_expression "uVar12 >> 8" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar20 = uVar12;" (assignment_expression "uVar20 = uVar12" identifier = identifier) ;) (if_statement "if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" { (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" identifier = identifier) ;) (expression_statement "uVar18 = uVar12;" (assignment_expression "uVar18 = uVar12" identifier = identifier) ;) })) (expression_statement "param_6[2] = (byte)uVar18;" (assignment_expression "param_6[2] = (byte)uVar18" (subscript_expression "param_6[2]" identifier [ number_literal ]) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));" (assignment_expression "uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" identifier = (call_expression "FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" identifier (argument_list "((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" ( (cast_expression "(float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8))" ( (binary_expression "(longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (binary_expression "(longdouble)dVar5 *\n                                     (longdouble)" (cast_expression "(longdouble)dVar5" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (parenthesized_expression "(longdouble)" ( identifier ))) * (cast_expression "(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) ))) )))) ;) (expression_statement "bVar15 = (byte)(uVar18 >> 8);" (assignment_expression "bVar15 = (byte)(uVar18 >> 8)" identifier = (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 8)" ( (binary_expression "uVar18 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" { (expression_statement "bVar15 = (byte)uVar18;" (assignment_expression "bVar15 = (byte)uVar18" identifier = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = uVar18 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar18 >> 8 & 0xff" identifier = (binary_expression "uVar18 >> 8 & 0xff" (binary_expression "uVar18 >> 8" identifier >> number_literal) & number_literal)) ;) })) (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[5] = (byte)uVar18;" (assignment_expression "param_6[5] = (byte)uVar18" (subscript_expression "param_6[5]" identifier [ number_literal ]) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          fVar1 = 1.0;\n        }" { (expression_statement "fVar1 = 1.0;" (assignment_expression "fVar1 = 1.0" identifier = number_literal) ;) }) (else_clause "else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" else (compound_statement "{\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" { (expression_statement "fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));" (assignment_expression "fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" identifier = (cast_expression "(float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" ( (binary_expression "(longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (binary_expression "(longdouble)_DAT_002df2e0 *\n                         (longdouble)" (cast_expression "(longdouble)_DAT_002df2e0" ( (type_descriptor "longdouble" type_identifier) ) identifier) * (parenthesized_expression "(longdouble)" ( identifier ))) * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) )))) ;) }))) (expression_statement "uVar18 = FUN_001533f0(fVar1);" (assignment_expression "uVar18 = FUN_001533f0(fVar1)" identifier = (call_expression "FUN_001533f0(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))) ;) (expression_statement "bVar15 = (byte)(uVar18 >> 8);" (assignment_expression "bVar15 = (byte)(uVar18 >> 8)" identifier = (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 8)" ( (binary_expression "uVar18 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" { (expression_statement "bVar15 = (byte)uVar18;" (assignment_expression "bVar15 = (byte)uVar18" identifier = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = uVar18 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar18 >> 8 & 0xff" identifier = (binary_expression "uVar18 >> 8 & 0xff" (binary_expression "uVar18 >> 8" identifier >> number_literal) & number_literal)) ;) })) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_6[6] = bVar15;" (assignment_expression "param_6[6] = bVar15" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = (byte)uVar18;" (assignment_expression "param_6[7] = (byte)uVar18" (subscript_expression "param_6[7]" identifier [ number_literal ]) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6 = param_6 + param_2[9] + 8;" (assignment_expression "param_6 = param_6 + param_2[9] + 8" identifier = (binary_expression "param_6 + param_2[9] + 8" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(local_b4 != param_3)" ( (binary_expression "local_b4 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 < 1) {\n      return;\n    }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );" do (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" { (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" { (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" identifier = (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" identifier = identifier) ;) (expression_statement "bVar9 = (byte)iVar19;" (assignment_expression "bVar9 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }" { (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar9 = bVar15;" (assignment_expression "bVar9 = bVar15" identifier = identifier) ;) })) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_6 = bVar9;" (assignment_expression "*param_6 = bVar9" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" { (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" { (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" identifier = (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" { (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" identifier = identifier) ;) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) }) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" { (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" else (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" { (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" identifier = (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))))) (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" { (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" identifier = identifier) ;) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (expression_statement "param_6[5] = bVar13;" (assignment_expression "param_6[5] = bVar13" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }" { (labeled_statement "LAB_00164f80:\n        iVar19 = -1;" statement_identifier : (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;)) (expression_statement "local_ac = 0xff;" (assignment_expression "local_ac = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" else (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          iVar19 = 0;\n          local_ac = 0;\n        }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;) }) (else_clause "else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" else (compound_statement "{\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" { (if_statement "if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;" if (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" ( (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00164f80;" goto statement_identifier ;)) (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_ac = (byte)((uint)iVar19 >> 8);" (assignment_expression "local_ac = (byte)((uint)iVar19 >> 8)" identifier = (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))) }))) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }" { (expression_statement "bVar15 = local_ac;" (assignment_expression "bVar15 = local_ac" identifier = identifier) ;) (expression_statement "local_ac = (byte)iVar19;" (assignment_expression "local_ac = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (expression_statement "param_6[7] = bVar15;" (assignment_expression "param_6[7] = bVar15" (subscript_expression "param_6[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_6[6] = local_ac;" (assignment_expression "param_6[6] = local_ac" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[9] + 8;" (assignment_expression "param_6 = param_6 + param_2[9] + 8" identifier = (binary_expression "param_6 + param_2[9] + 8" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (if_statement "if (local_b4 == param_3) {\n        return;\n      }" if (parenthesized_expression "(local_b4 == param_3)" ( (binary_expression "local_b4 == param_3" identifier == identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" if (parenthesized_expression "(uVar18 < 0x11)" ( (binary_expression "uVar18 < 0x11" identifier < number_literal) )) (compound_statement "{\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }" { (if_statement "if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }" if (parenthesized_expression "(uVar18 == 8)" ( (binary_expression "uVar18 == 8" identifier == number_literal) )) (compound_statement "{\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }" { (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);" do (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" identifier = (binary_expression "dVar3 / (double)DAT_002e814c" identifier / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" identifier = (binary_expression "dVar3 / (double)DAT_002e814c" identifier / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" { (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" identifier = (binary_expression "dVar3 / (double)DAT_002e814c" identifier / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" ( (binary_expression "dVar3 < (double)DAT_002e8150" identifier < (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" { (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }" { (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" identifier = (binary_expression "dVar3 / (double)DAT_002e814c" identifier / (cast_expression "(double)DAT_002e814c" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" if (parenthesized_expression "((double)DAT_002e8150 <= dVar3)" ( (binary_expression "(double)DAT_002e8150 <= dVar3" (cast_expression "(double)DAT_002e8150" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              bVar15 = 0xff;\n            }" { (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" else (compound_statement "{\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" { (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) })) })) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9] + 4;" (assignment_expression "param_6 = param_6 + param_2[9] + 4" identifier = (binary_expression "param_6 + param_2[9] + 4" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != param_3)" ( (binary_expression "iVar19 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }" if (parenthesized_expression "(uVar18 == 10)" ( (binary_expression "uVar18 == 10" identifier == number_literal) )) (compound_statement "{\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }" { (if_statement "if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }" if (parenthesized_expression "(param_2[0xb] == 0)" ( (binary_expression "param_2[0xb] == 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }" { (if_statement "if (param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );" do (compound_statement "{\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);" do (compound_statement "{\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          }" { (expression_statement "iVar11 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (if_statement "if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" if (parenthesized_expression "(iVar14 == 2)" ( (binary_expression "iVar14 == 2" identifier == number_literal) )) (compound_statement "{\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" { (expression_statement "iVar11 = *(int *)(iVar11 + 0x20);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x20)" identifier = (pointer_expression "*(int *)(iVar11 + 0x20)" * (cast_expression "(int *)(iVar11 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x20)" ( (binary_expression "iVar11 + 0x20" identifier + number_literal) ))))) ;) (labeled_statement "LAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" statement_identifier : (expression_statement "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" (assignment_expression "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" identifier = (cast_expression "(float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" ( (binary_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff" (cast_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(*(double *)(param_5 + iVar11 * 8))" identifier (argument_list "(*(double *)(param_5 + iVar11 * 8))" ( (pointer_expression "*(double *)(param_5 + iVar11 * 8)" * (cast_expression "(double *)(param_5 + iVar11 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar11 * 8)" ( (binary_expression "param_5 + iVar11 * 8" identifier + (binary_expression "iVar11 * 8" identifier * number_literal)) )))) )))) & number_literal) )))) ;)) }) (else_clause "else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" else (if_statement "if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" if (parenthesized_expression "(iVar14 == 3)" ( (binary_expression "iVar14 == 3" identifier == number_literal) )) (compound_statement "{\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }" { (expression_statement "fVar1 = DAT_002df8a8;" (assignment_expression "fVar1 = DAT_002df8a8" identifier = identifier) ;) (if_statement "if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }" if (parenthesized_expression "(*(int *)(iVar11 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar11 + 0x34) != 0" (pointer_expression "*(int *)(iVar11 + 0x34)" * (cast_expression "(int *)(iVar11 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x34)" ( (binary_expression "iVar11 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }" { (expression_statement "iVar11 = *(int *)(iVar11 + 0x38);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x38)" identifier = (pointer_expression "*(int *)(iVar11 + 0x38)" * (cast_expression "(int *)(iVar11 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x38)" ( (binary_expression "iVar11 + 0x38" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_001644de;" goto statement_identifier ;) })) }) (else_clause "else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" else (compound_statement "{\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" { (if_statement "if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }" if (parenthesized_expression "(iVar14 == 1)" ( (binary_expression "iVar14 == 1" identifier == number_literal) )) (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }" { (expression_statement "iVar11 = *(int *)(iVar11 + 0x14);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x14)" identifier = (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }" else (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 8);\n              }" { (expression_statement "iVar11 = *(int *)(iVar11 + 8);" (assignment_expression "iVar11 = *(int *)(iVar11 + 8)" identifier = (pointer_expression "*(int *)(iVar11 + 8)" * (cast_expression "(int *)(iVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) ;) }))) (expression_statement "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" (assignment_expression "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" identifier = (cast_expression "(float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" ( (binary_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff" (cast_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(*(double *)(param_5 + iVar11 * 8))" identifier (argument_list "(*(double *)(param_5 + iVar11 * 8))" ( (pointer_expression "*(double *)(param_5 + iVar11 * 8)" * (cast_expression "(double *)(param_5 + iVar11 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar11 * 8)" ( (binary_expression "param_5 + iVar11 * 8" identifier + (binary_expression "iVar11 * 8" identifier * number_literal)) )))) )))) & number_literal) )))) ;) }))))) (expression_statement "uVar20 = (uint)(iVar14 + iVar19) % 3;" (assignment_expression "uVar20 = (uint)(iVar14 + iVar19) % 3" identifier = (binary_expression "(uint)(iVar14 + iVar19) % 3" (call_expression "(uint)(iVar14 + iVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 + iVar19)" ( (binary_expression "iVar14 + iVar19" identifier + identifier) ))) % number_literal)) ;) (if_statement "if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(uVar20 == 1)" ( (binary_expression "uVar20 == 1" identifier == number_literal) )) (compound_statement "{\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }" { (if_statement "if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  uVar18 = 0xfffff000;\n                }" { (expression_statement "uVar18 = 0xfffff000;" (assignment_expression "uVar18 = 0xfffff000" identifier = number_literal) ;) }) (else_clause "else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" else (compound_statement "{\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" else (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar18 = uVar18 | local_34 << 0xc;" (assignment_expression "uVar18 = uVar18 | local_34 << 0xc" identifier = (binary_expression "uVar18 | local_34 << 0xc" identifier | (binary_expression "local_34 << 0xc" identifier << number_literal))) ;) }))) })) }) (else_clause "else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" else (if_statement "if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(uVar20 == 2)" ( (binary_expression "uVar20 == 2" identifier == number_literal) )) (compound_statement "{\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }" { (if_statement "if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  uVar18 = 0xfffffffc;\n                }" { (expression_statement "uVar18 = 0xfffffffc;" (assignment_expression "uVar18 = 0xfffffffc" identifier = number_literal) ;) }) (else_clause "else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" else (compound_statement "{\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" else (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar18 = uVar18 | local_34 << 2;" (assignment_expression "uVar18 = uVar18 | local_34 << 2" identifier = (binary_expression "uVar18 | local_34 << 2" identifier | (binary_expression "local_34 << 2" identifier << number_literal))) ;) }))) })) (expression_statement "bVar13 = (byte)(uVar18 >> 8);" (assignment_expression "bVar13 = (byte)(uVar18 >> 8)" identifier = (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 8)" ( (binary_expression "uVar18 >> 8" identifier >> number_literal) )))) ;) (expression_statement "bVar15 = (byte)(uVar18 >> 0x10);" (assignment_expression "bVar15 = (byte)(uVar18 >> 0x10)" identifier = (call_expression "(byte)(uVar18 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 0x10)" ( (binary_expression "uVar18 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar18 >> 0x18);" (assignment_expression "local_a4 = (byte)(uVar18 >> 0x18)" identifier = (call_expression "(byte)(uVar18 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar18 >> 0x18)" ( (binary_expression "uVar18 >> 0x18" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "*param_6 = (byte)uVar18;" (assignment_expression "*param_6 = (byte)uVar18" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = local_a4;" (assignment_expression "param_6[3] = local_a4" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) }) (else_clause "else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" else (compound_statement "{\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "param_6[3] = (byte)uVar18;" (assignment_expression "param_6[3] = (byte)uVar18" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "param_6[2] = bVar13;" (assignment_expression "param_6[2] = bVar13" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_6 = local_a4;" (assignment_expression "*param_6 = local_a4" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) }))) }) (else_clause "else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" else (if_statement "if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" if (parenthesized_expression "(0.0 < fVar1)" ( (binary_expression "0.0 < fVar1" number_literal < identifier) )) (compound_statement "{\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" { (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" identifier = (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" ( (binary_expression "fVar1 * DAT_003057bc" identifier * identifier) )) / identifier)) ;) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" if (parenthesized_expression "(DAT_002df8b0 <= fVar1)" ( (binary_expression "DAT_002df8b0 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                uVar18 = uVar18 | 0xffc00000;\n              }" { (expression_statement "uVar18 = uVar18 | 0xffc00000;" (assignment_expression "uVar18 = uVar18 | 0xffc00000" identifier = (binary_expression "uVar18 | 0xffc00000" identifier | number_literal)) ;) }) (else_clause "else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" else (compound_statement "{\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" { (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" identifier = (binary_expression "fVar1 + DAT_002df2b8" identifier + identifier)) ;) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" if (parenthesized_expression "(DAT_002df2c8 <= fVar1)" ( (binary_expression "DAT_002df2c8 <= fVar1" identifier <= identifier) )) (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1 - DAT_002df2c8)" identifier (argument_list "(fVar1 - DAT_002df2c8)" ( (binary_expression "fVar1 - DAT_002df2c8" identifier - identifier) )))))) ;) }) (else_clause "else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" else (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(fVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(fVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar18 = uVar18 | local_34 << 0x16;" (assignment_expression "uVar18 = uVar18 | local_34 << 0x16" identifier = (binary_expression "uVar18 | local_34 << 0x16" identifier | (binary_expression "local_34 << 0x16" identifier << number_literal))) ;) }))) })))))) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 4)" ( (binary_expression "iVar14 != 4" identifier != number_literal) )) ;) (expression_statement "iVar19 = iVar19 + 4;" (assignment_expression "iVar19 = iVar19 + 4" identifier = (binary_expression "iVar19 + 4" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" identifier = (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ]))) ;) (if_statement "if (param_3 << 2 == iVar19) {\n            return;\n          }" if (parenthesized_expression "(param_3 << 2 == iVar19)" ( (binary_expression "param_3 << 2 == iVar19" (binary_expression "param_3 << 2" identifier << number_literal) == identifier) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }" if (parenthesized_expression "(param_2[1] == 0x20)" ( (binary_expression "param_2[1] == 0x20" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }" { (if_statement "if (param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = param_2[0x14];" (assignment_expression "uVar18 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "local_74 = 10;" (assignment_expression "local_74 = 10" identifier = number_literal) ;) (while_statement "while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" identifier + (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }" { (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) })) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" { (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" do (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" { (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" identifier = identifier) ;) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" if (parenthesized_expression "(uVar12 <= uVar18)" ( (binary_expression "uVar12 <= uVar18" identifier <= identifier) )) (compound_statement "{\n                uVar21 = uVar12;\n              }" { (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" identifier = (binary_expression "uVar12 - uVar21" identifier - identifier)) ;) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" identifier = (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" * (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" ( (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" identifier = (binary_expression "uVar18 - uVar21" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" identifier = (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x18)" ( (binary_expression "uVar20 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" identifier = (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x10)" ( (binary_expression "uVar20 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" identifier = (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 8)" ( (binary_expression "uVar20 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" { (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" else (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" { (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar12)" ( (binary_expression "0 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" { (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" do (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" { (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" identifier = identifier) ;) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" if (parenthesized_expression "(uVar12 <= uVar18)" ( (binary_expression "uVar12 <= uVar18" identifier <= identifier) )) (compound_statement "{\n                uVar21 = uVar12;\n              }" { (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" identifier = (binary_expression "uVar12 - uVar21" identifier - identifier)) ;) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" identifier = (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" * (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" ( (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" identifier = (binary_expression "uVar18 - uVar21" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" identifier = (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x18)" ( (binary_expression "uVar20 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" identifier = (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x10)" ( (binary_expression "uVar20 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" identifier = (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 8)" ( (binary_expression "uVar20 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" { (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" else (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" { (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar12)" ( (binary_expression "0 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x20) * 8" (pointer_expression "*(int *)(iVar19 + 0x20)" * (cast_expression "(int *)(iVar19 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x20)" ( (binary_expression "iVar19 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" { (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" identifier = identifier) ;) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" do (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" { (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" identifier = identifier) ;) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" if (parenthesized_expression "(uVar12 <= uVar18)" ( (binary_expression "uVar12 <= uVar18" identifier <= identifier) )) (compound_statement "{\n                uVar21 = uVar12;\n              }" { (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" identifier = (binary_expression "uVar12 - uVar21" identifier - identifier)) ;) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" identifier = (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" * (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" ( (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" identifier = (binary_expression "uVar18 - uVar21" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" ( (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" ( (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" identifier = (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x18)" ( (binary_expression "uVar20 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" identifier = (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x10)" ( (binary_expression "uVar20 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" identifier = (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 8)" ( (binary_expression "uVar20 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" { (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" else (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" { (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) })) }) while (parenthesized_expression "(0 < (int)uVar12)" ( (binary_expression "0 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (expression_statement "local_b4 = 0x3ff;" (assignment_expression "local_b4 = 0x3ff" identifier = number_literal) ;) (if_statement "if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }" if (parenthesized_expression "(*(int *)(iVar19 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar19 + 0x34) != 0" (pointer_expression "*(int *)(iVar19 + 0x34)" * (cast_expression "(int *)(iVar19 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x38) * 8" (pointer_expression "*(int *)(iVar19 + 0x38)" * (cast_expression "(int *)(iVar19 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x38)" ( (binary_expression "iVar19 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }" { (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" else (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" identifier = identifier) ;) }))) }) (else_clause "else {\n                local_b4 = 0xffffffff;\n              }" else (compound_statement "{\n                local_b4 = 0xffffffff;\n              }" { (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" identifier = number_literal) ;) }))) })) })) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }" if (parenthesized_expression "(0 < (int)local_74)" ( (binary_expression "0 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }" { (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" identifier = identifier) ;) (while_statement "while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }" { (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" identifier = identifier) ;) (if_statement "if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }" if (parenthesized_expression "(local_74 <= uVar18)" ( (binary_expression "local_74 <= uVar18" identifier <= identifier) )) (compound_statement "{\n                uVar21 = local_74;\n              }" { (expression_statement "uVar21 = local_74;" (assignment_expression "uVar21 = local_74" identifier = identifier) ;) })) (expression_statement "cVar6 = (char)local_74;" (assignment_expression "cVar6 = (char)local_74" identifier = (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_74 = local_74 - uVar21;" (assignment_expression "local_74 = local_74 - uVar21" identifier = (binary_expression "local_74 - uVar21" identifier - identifier)) ;) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" identifier = (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" * (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" ( (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" identifier = (binary_expression "uVar18 - uVar21" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier = (binary_expression "uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" identifier | (binary_expression "(local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10)" ( (binary_expression "local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)uVar12 - cVar6 & 0x1fU)" identifier >> (parenthesized_expression "((char)uVar12 - cVar6 & 0x1fU)" ( (binary_expression "(char)uVar12 - cVar6 & 0x1fU" (binary_expression "(char)uVar12 - cVar6" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) - identifier) & number_literal) ))) & identifier) )) << (parenthesized_expression "(0x20U - cVar7 & 0x1f)" ( (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" number_literal - identifier) & number_literal) ))))) ;) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }" { (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" identifier = (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x18)" ( (binary_expression "uVar20 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" identifier = (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 0x10)" ( (binary_expression "uVar20 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" identifier = (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 >> 8)" ( (binary_expression "uVar20 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" { (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" else (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" { (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" identifier = number_literal) ;) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" identifier = (binary_expression "param_6 + 4" identifier + number_literal)) ;) })) (if_statement "if ((int)local_74 < 1) break;" if (parenthesized_expression "((int)local_74 < 1)" ( (binary_expression "(int)local_74 < 1" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = *param_2;" (assignment_expression "uVar12 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) })) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" identifier = (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ]))) ;) (if_statement "if (local_9c == param_3) break;" if (parenthesized_expression "(local_9c == param_3)" ( (binary_expression "local_9c == param_3" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (return_statement "return;" return ;) })) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = 10;" (assignment_expression "uVar18 = 10" identifier = number_literal) ;) (do_statement "do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );" do (compound_statement "{\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      }" { (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 8) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 8) * 8" identifier + (binary_expression "*(int *)(iVar14 + 8) * 8" (pointer_expression "*(int *)(iVar14 + 8)" * (cast_expression "(int *)(iVar14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          local_4c = 0;\n        }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" else (compound_statement "{\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" { (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n            local_4c = 0xffffffff;\n          }" { (expression_statement "local_4c = 0xffffffff;" (assignment_expression "local_4c = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" else (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" identifier = identifier) ;) }) (else_clause "else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" else (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" identifier = identifier) ;) }))) }))) }))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (if_statement "if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) (if_statement "if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x14) * 8" (pointer_expression "*(int *)(iVar14 + 0x14)" * (cast_expression "(int *)(iVar14 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00165390;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00165390;" goto statement_identifier ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" else (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" { (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" do (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          }" { (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n                uVar12 = uVar18;\n              }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar18 = uVar21;\n              }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n                *param_6 = 0;\n              }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15" identifier = (binary_expression "local_4c >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_4c >> bVar15" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar15" number_literal << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" { (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "0 >> ((byte)uVar18 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar15 = 0;\n              }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00165364;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00165364;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x14) * 8" (pointer_expression "*(int *)(iVar14 + 0x14)" * (cast_expression "(int *)(iVar14 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\nLAB_00165e72:\n            local_54 = 0;\n          }" { (labeled_statement "LAB_00165e72:\n            local_54 = 0;" statement_identifier : (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" { (labeled_statement "LAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;" statement_identifier : (if_statement "if (dVar3 <= 0.0) goto LAB_00165e72;" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (goto_statement "goto LAB_00165e72;" goto statement_identifier ;))) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_54 = 0xffffffff;\n            }" { (expression_statement "local_54 = 0xffffffff;" (assignment_expression "local_54 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" else (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_54 = local_34;" (assignment_expression "local_54 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_54 = local_34;" (assignment_expression "local_54 = local_34" identifier = identifier) ;) }))) }))) }))) (if_statement "if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) }))) (if_statement "if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x20) * 8" (pointer_expression "*(int *)(iVar14 + 0x20)" * (cast_expression "(int *)(iVar14 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00165520;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00165520;" goto statement_identifier ;)) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" else (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" { (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" do (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          }" { (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n                uVar12 = uVar18;\n              }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar18 = uVar21;\n              }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n                *param_6 = 0;\n              }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15" identifier = (binary_expression "local_54 >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_54 >> bVar15" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar15" number_literal << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" { (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "0 >> ((byte)uVar18 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar15 = 0;\n              }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_001654f4;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_001654f4;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x20) * 8" (pointer_expression "*(int *)(iVar14 + 0x20)" * (cast_expression "(int *)(iVar14 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\nLAB_00165e52:\n            local_5c = 0;\n          }" { (labeled_statement "LAB_00165e52:\n            local_5c = 0;" statement_identifier : (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" { (labeled_statement "LAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;" statement_identifier : (if_statement "if (dVar3 <= 0.0) goto LAB_00165e52;" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (goto_statement "goto LAB_00165e52;" goto statement_identifier ;))) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" if (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" ( (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              local_5c = 0xffffffff;\n            }" { (expression_statement "local_5c = 0xffffffff;" (assignment_expression "local_5c = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" else (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_5c = local_34;" (assignment_expression "local_5c = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_5c = local_34;" (assignment_expression "local_5c = local_34" identifier = identifier) ;) }))) }))) }))) (if_statement "if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) }))) (if_statement "if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }" if (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }" { (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" do (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          }" { (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n                uVar12 = uVar18;\n              }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar18 = uVar21;\n              }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n                *param_6 = 0;\n              }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15" identifier = (binary_expression "local_5c >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_5c >> bVar15" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar15" number_literal << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" { (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "0 >> ((byte)uVar18 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                bVar15 = 0;\n              }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00165684;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00165684;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (if_statement "if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" if (parenthesized_expression "(*(int *)(iVar14 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar14 + 0x34) == 0" (pointer_expression "*(int *)(iVar14 + 0x34)" * (cast_expression "(int *)(iVar14 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x34)" ( (binary_expression "iVar14 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          local_44 = 0x3ff;\n        }" { (expression_statement "local_44 = 0x3ff;" (assignment_expression "local_44 = 0x3ff" identifier = number_literal) ;) }) (else_clause "else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" else (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(iVar14 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar14 + 0x38) * 8" (pointer_expression "*(int *)(iVar14 + 0x38)" * (cast_expression "(int *)(iVar14 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x38)" ( (binary_expression "iVar14 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n            local_44 = 0;\n          }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" else (compound_statement "{\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" { (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" identifier = (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" ( (binary_expression "dVar3 * (double)DAT_003057bc" identifier * (cast_expression "(double)DAT_003057bc" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_44 = local_34;" (assignment_expression "local_44 = local_34" identifier = identifier) ;) }) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" else (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" { (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar3)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))))) ;) (expression_statement "local_44 = local_34;" (assignment_expression "local_44 = local_34" identifier = identifier) ;) }))) }) (else_clause "else {\n              local_44 = 0xffffffff;\n            }" else (compound_statement "{\n              local_44 = 0xffffffff;\n            }" { (expression_statement "local_44 = 0xffffffff;" (assignment_expression "local_44 = 0xffffffff" identifier = number_literal) ;) }))) }))) }))) (if_statement "if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) (if_statement "if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }" if (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }" { (while_statement "while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n              uVar12 = uVar18;\n            }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar18 = uVar21;\n            }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n              *param_6 = 0;\n            }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n              *param_6 = 0;\n            }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15" identifier = (binary_expression "local_44 >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_44 >> bVar15" identifier >> identifier) | (binary_expression "0 << 0x20 - bVar15" number_literal << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }" { (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "0 >> ((byte)uVar18 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              bVar15 = 0;\n            }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }" { (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((int)uVar21 < 1) break;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) })) })) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" identifier = (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ]))) ;) (if_statement "if (iVar19 == param_3) {\n          return;\n        }" if (parenthesized_expression "(iVar19 == param_3)" ( (binary_expression "iVar19 == param_3" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_001642d0:\n    local_7c = 0;" statement_identifier : (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;)) (expression_statement "iStack_78 = 0;" (assignment_expression "iStack_78 = 0" identifier = number_literal) ;) (if_statement "if (uVar18 == 0) goto LAB_00163bfb;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00163bfb;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" else (compound_statement "{\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" { (if_statement "if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(uVar18 == 0x20)" ( (binary_expression "uVar18 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }" { (if_statement "if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }" { (if_statement "if (param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);" do (compound_statement "{\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        }" { (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" identifier = (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) * (cast_expression "(float)*(double *)(param_2 + 0x11)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) )))))) + (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))))) ;) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" identifier = (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }" { (expression_statement "*param_6 = SUB41(fVar4,0);" (assignment_expression "*param_6 = SUB41(fVar4,0)" (pointer_expression "*param_6" * identifier) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = bVar9;" (assignment_expression "param_6[2] = bVar9" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" { (expression_statement "param_6[1] = bVar9;" (assignment_expression "param_6[1] = bVar9" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_6 = bVar13;" (assignment_expression "*param_6 = bVar13" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = SUB41(fVar4,0);" (assignment_expression "param_6[3] = SUB41(fVar4,0)" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" identifier = (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) * (cast_expression "(float)*(double *)(param_2 + 0x11)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) )))))) + (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))))) ;) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" identifier = (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }" { (expression_statement "param_6[4] = SUB41(fVar4,0);" (assignment_expression "param_6[4] = SUB41(fVar4,0)" (subscript_expression "param_6[4]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[6] = bVar9;" (assignment_expression "param_6[6] = bVar9" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[5] = bVar15;" (assignment_expression "param_6[5] = bVar15" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = bVar13;" (assignment_expression "param_6[7] = bVar13" (subscript_expression "param_6[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" { (expression_statement "param_6[5] = bVar9;" (assignment_expression "param_6[5] = bVar9" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[4] = bVar13;" (assignment_expression "param_6[4] = bVar13" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[6] = bVar15;" (assignment_expression "param_6[6] = bVar15" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = SUB41(fVar4,0);" (assignment_expression "param_6[7] = SUB41(fVar4,0)" (subscript_expression "param_6[7]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" identifier = (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) * (cast_expression "(float)*(double *)(param_2 + 0x11)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) )))))) + (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))))) ;) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" identifier = (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }" { (expression_statement "param_6[8] = SUB41(fVar4,0);" (assignment_expression "param_6[8] = SUB41(fVar4,0)" (subscript_expression "param_6[8]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[10] = bVar13;" (assignment_expression "param_6[10] = bVar13" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = bVar15;" (assignment_expression "param_6[9] = bVar15" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = bVar9;" (assignment_expression "param_6[0xb] = bVar9" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" else (compound_statement "{\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" { (expression_statement "param_6[10] = bVar15;" (assignment_expression "param_6[10] = bVar15" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[8] = bVar9;" (assignment_expression "param_6[8] = bVar9" (subscript_expression "param_6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = bVar13;" (assignment_expression "param_6[9] = bVar13" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = SUB41(fVar4,0);" (assignment_expression "param_6[0xb] = SUB41(fVar4,0)" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar4 = fVar1;" (assignment_expression "fVar4 = fVar1" identifier = identifier) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }" { (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))))) ;) })) (expression_statement "fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" identifier = (binary_expression "fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "fVar4 * (float)*(double *)(param_2 + 0x11)" identifier * (cast_expression "(float)*(double *)(param_2 + 0x11)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) )))))) + (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))))) ;) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" identifier = (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 8)" ( (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "fVar22 = (float)((uint)fVar4 >> 0x18);" (assignment_expression "fVar22 = (float)((uint)fVar4 >> 0x18)" identifier = (cast_expression "(float)((uint)fVar4 >> 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x10)" ( (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }" { (expression_statement "param_6[0xc] = SUB41(fVar4,0);" (assignment_expression "param_6[0xc] = SUB41(fVar4,0)" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = (call_expression "SUB41(fVar4,0)" identifier (argument_list "(fVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0xe] = bVar13;" (assignment_expression "param_6[0xe] = bVar13" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xd] = bVar15;" (assignment_expression "param_6[0xd] = bVar15" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" else (compound_statement "{\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" { (expression_statement "param_6[0xe] = bVar15;" (assignment_expression "param_6[0xe] = bVar15" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xc] = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "param_6[0xc] = (byte)((uint)fVar4 >> 0x18)" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar4 >> 0x18)" ( (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "param_6[0xd] = bVar13;" (assignment_expression "param_6[0xd] = bVar13" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "fVar22 = fVar4;" (assignment_expression "fVar22 = fVar4" identifier = identifier) ;) }))) (expression_statement "param_6[0xf] = SUB41(fVar22,0);" (assignment_expression "param_6[0xf] = SUB41(fVar22,0)" (subscript_expression "param_6[0xf]" identifier [ number_literal ]) = (call_expression "SUB41(fVar22,0)" identifier (argument_list "(fVar22,0)" ( identifier , number_literal )))) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9] + 0x10;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x10" identifier = (binary_expression "param_6 + param_2[9] + 0x10" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) }) while (parenthesized_expression "(local_b4 != param_3)" ( (binary_expression "local_b4 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (do_statement "do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );" do (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if (param_2[0x10] == 1) goto LAB_00164d14;" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00164d14;" goto statement_identifier ;)) (labeled_statement "LAB_00164af3:\n          param_6[1] = bVar9;" statement_identifier : (expression_statement "param_6[1] = bVar9;" (assignment_expression "param_6[1] = bVar9" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "*param_6 = bVar8;" (assignment_expression "*param_6 = bVar8" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[2] = bVar17;" (assignment_expression "param_6[2] = bVar17" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = (byte)local_34;" (assignment_expression "param_6[3] = (byte)local_34" (subscript_expression "param_6[3]" identifier [ number_literal ]) = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" else (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" { (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" identifier = (binary_expression "dVar3 * (double)DAT_002e8148" identifier * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(dVar5 <= dVar3)" ( (binary_expression "dVar5 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) (expression_statement "bVar9 = 0xff;" (assignment_expression "bVar9 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(byte)lVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar9 = (byte)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = bVar17;" (assignment_expression "bVar13 = bVar17" identifier = identifier) ;) (if_statement "if (param_2[0x10] != 1) goto LAB_00164af3;" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00164af3;" goto statement_identifier ;)) (labeled_statement "LAB_00164d14:\n          *param_6 = bVar15;" statement_identifier : (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" * identifier) = identifier) ;)) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = bVar9;" (assignment_expression "param_6[2] = bVar9" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = bVar8;" (assignment_expression "param_6[3] = bVar8" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if (param_2[0x10] == 1) goto LAB_00164ce4;" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00164ce4;" goto statement_identifier ;)) (labeled_statement "LAB_00164b98:\n          param_6[4] = bVar17;" statement_identifier : (expression_statement "param_6[4] = bVar17;" (assignment_expression "param_6[4] = bVar17" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[5] = bVar8;" (assignment_expression "param_6[5] = bVar8" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[6] = bVar16;" (assignment_expression "param_6[6] = bVar16" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = (byte)local_34;" (assignment_expression "param_6[7] = (byte)local_34" (subscript_expression "param_6[7]" identifier [ number_literal ]) = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" else (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" { (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" identifier = (binary_expression "dVar3 * (double)DAT_002e8148" identifier * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" identifier = number_literal) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(byte)lVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar16 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar16 = (byte)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = bVar17;" (assignment_expression "bVar13 = bVar17" identifier = identifier) ;) (expression_statement "bVar9 = bVar16;" (assignment_expression "bVar9 = bVar16" identifier = identifier) ;) (if_statement "if (param_2[0x10] != 1) goto LAB_00164b98;" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00164b98;" goto statement_identifier ;)) (labeled_statement "LAB_00164ce4:\n          param_6[4] = bVar15;" statement_identifier : (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[5] = bVar9;" (assignment_expression "param_6[5] = bVar9" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[6] = bVar8;" (assignment_expression "param_6[6] = bVar8" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = bVar13;" (assignment_expression "param_6[7] = bVar13" (subscript_expression "param_6[7]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if (param_2[0x10] == 1) goto LAB_00164cb8;" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00164cb8;" goto statement_identifier ;)) (labeled_statement "LAB_00164c3f:\n          param_6[10] = bVar16;" statement_identifier : (expression_statement "param_6[10] = bVar16;" (assignment_expression "param_6[10] = bVar16" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[8] = bVar17;" (assignment_expression "param_6[8] = bVar17" (subscript_expression "param_6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = bVar8;" (assignment_expression "param_6[9] = bVar8" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = (byte)local_34;" (assignment_expression "param_6[0xb] = (byte)local_34" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" else (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" { (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" identifier = (binary_expression "dVar3 * (double)DAT_002e8148" identifier * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }" { (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" identifier = number_literal) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) }) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(byte)lVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar16 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar16 = (byte)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = bVar16;" (assignment_expression "bVar13 = bVar16" identifier = identifier) ;) (expression_statement "bVar9 = bVar17;" (assignment_expression "bVar9 = bVar17" identifier = identifier) ;) (if_statement "if (param_2[0x10] != 1) goto LAB_00164c3f;" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00164c3f;" goto statement_identifier ;)) (labeled_statement "LAB_00164cb8:\n          param_6[8] = bVar15;" statement_identifier : (expression_statement "param_6[8] = bVar15;" (assignment_expression "param_6[8] = bVar15" (subscript_expression "param_6[8]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[9] = bVar13;" (assignment_expression "param_6[9] = bVar13" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[10] = bVar8;" (assignment_expression "param_6[10] = bVar8" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = bVar9;" (assignment_expression "param_6[0xb] = bVar9" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }" { (labeled_statement "LAB_00164c70:\n          local_34._0_1_ = 0xff;" statement_identifier : (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;)) (expression_statement "bVar9 = 0xff;" (assignment_expression "bVar9 = 0xff" identifier = number_literal) ;) (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" identifier = number_literal) ;) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" identifier = number_literal) ;) (expression_statement "bVar8 = (byte)local_34;" (assignment_expression "bVar8 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" identifier = number_literal) ;) (if_statement "if (param_2[0x10] != 1) goto LAB_00164a1f;" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00164a1f;" goto statement_identifier ;)) (labeled_statement "LAB_00164c8e:\n          bVar8 = bVar15;" statement_identifier : (expression_statement "bVar8 = bVar15;" (assignment_expression "bVar8 = bVar15" identifier = identifier) ;)) (expression_statement "param_6[0xc] = (byte)local_34;" (assignment_expression "param_6[0xc] = (byte)local_34" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0xd] = bVar9;" (assignment_expression "param_6[0xd] = bVar9" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xe] = bVar17;" (assignment_expression "param_6[0xe] = bVar17" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" else (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" if (parenthesized_expression "(dVar3 <= 0.0)" ( (binary_expression "dVar3 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }" { (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" else (compound_statement "{\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" { (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" identifier = (binary_expression "dVar3 * (double)DAT_002e8148" identifier * (cast_expression "(double)DAT_002e8148" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (DAT_002e8160 <= dVar3) goto LAB_00164c70;" if (parenthesized_expression "(DAT_002e8160 <= dVar3)" ( (binary_expression "DAT_002e8160 <= dVar3" identifier <= identifier) )) (goto_statement "goto LAB_00164c70;" goto statement_identifier ;)) (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" identifier = (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" identifier (argument_list "(dVar3 + (double)DAT_002df2b8)" ( (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" identifier . field_identifier) = (cast_expression "(byte)lVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar15 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar15 = (byte)((ulonglong)lVar2 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x18)" ( (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar13 = (byte)((ulonglong)lVar2 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x10)" ( (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar9 = (byte)((ulonglong)lVar2 >> 8)" identifier = (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 8)" ( (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "bVar8 = (byte)local_34;" (assignment_expression "bVar8 = (byte)local_34" identifier = (cast_expression "(byte)local_34" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar17 = bVar13;" (assignment_expression "bVar17 = bVar13" identifier = identifier) ;) (expression_statement "bVar16 = bVar9;" (assignment_expression "bVar16 = bVar9" identifier = identifier) ;) (if_statement "if (param_2[0x10] == 1) goto LAB_00164c8e;" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00164c8e;" goto statement_identifier ;)) (labeled_statement "LAB_00164a1f:\n          param_6[0xd] = bVar13;" statement_identifier : (expression_statement "param_6[0xd] = bVar13;" (assignment_expression "param_6[0xd] = bVar13" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_6[0xc] = bVar15;" (assignment_expression "param_6[0xc] = bVar15" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xe] = bVar16;" (assignment_expression "param_6[0xe] = bVar16" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "param_6[0xf] = bVar8;" (assignment_expression "param_6[0xf] = bVar8" (subscript_expression "param_6[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9] + 0x10;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x10" identifier = (binary_expression "param_6 + param_2[9] + 0x10" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) (if_statement "if (local_b4 == param_3) {\n          return;\n        }" if (parenthesized_expression "(local_b4 == param_3)" ( (binary_expression "local_b4 == param_3" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (uVar18 != 0x40) goto LAB_001642d0;" if (parenthesized_expression "(uVar18 != 0x40)" ( (binary_expression "uVar18 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_001642d0;" goto statement_identifier ;)) (if_statement "if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = (double)DAT_002df8a8;" (assignment_expression "dVar3 = (double)DAT_002df8a8" identifier = (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);" do (compound_statement "{\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      }" { (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" identifier = (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) * (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) ))))) + (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) ;) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }" { (expression_statement "*param_6 = SUB81(dVar5,0);" (assignment_expression "*param_6 = SUB81(dVar5,0)" (pointer_expression "*param_6" * identifier) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[4] = bVar13;" (assignment_expression "param_6[4] = bVar13" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[5] = bVar15;" (assignment_expression "param_6[5] = bVar15" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[2] = local_8c;" (assignment_expression "param_6[2] = local_8c" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = local_94;" (assignment_expression "param_6[3] = local_94" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[6] = (byte)local_9c;" (assignment_expression "param_6[6] = (byte)local_9c" (subscript_expression "param_6[6]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[7] = local_a4;" (assignment_expression "param_6[7] = local_a4" (subscript_expression "param_6[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" else (compound_statement "{\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" { (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[7] = SUB81(dVar5,0);" (assignment_expression "param_6[7] = SUB81(dVar5,0)" (subscript_expression "param_6[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[4] = local_94;" (assignment_expression "param_6[4] = local_94" (subscript_expression "param_6[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_6 = local_a4;" (assignment_expression "*param_6 = local_a4" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[5] = local_8c;" (assignment_expression "param_6[5] = local_8c" (subscript_expression "param_6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[1] = (byte)local_9c;" (assignment_expression "param_6[1] = (byte)local_9c" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[6] = local_ac;" (assignment_expression "param_6[6] = local_ac" (subscript_expression "param_6[6]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" identifier = (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) * (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) ))))) + (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) ;) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }" { (expression_statement "param_6[8] = SUB81(dVar5,0);" (assignment_expression "param_6[8] = SUB81(dVar5,0)" (subscript_expression "param_6[8]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0xc] = bVar13;" (assignment_expression "param_6[0xc] = bVar13" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xd] = bVar15;" (assignment_expression "param_6[0xd] = bVar15" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = local_ac;" (assignment_expression "param_6[9] = local_ac" (subscript_expression "param_6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[10] = local_8c;" (assignment_expression "param_6[10] = local_8c" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = local_94;" (assignment_expression "param_6[0xb] = local_94" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xe] = (byte)local_9c;" (assignment_expression "param_6[0xe] = (byte)local_9c" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0xf] = local_a4;" (assignment_expression "param_6[0xf] = local_a4" (subscript_expression "param_6[0xf]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" else (compound_statement "{\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" { (expression_statement "param_6[10] = bVar15;" (assignment_expression "param_6[10] = bVar15" (subscript_expression "param_6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xb] = bVar13;" (assignment_expression "param_6[0xb] = bVar13" (subscript_expression "param_6[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xf] = SUB81(dVar5,0);" (assignment_expression "param_6[0xf] = SUB81(dVar5,0)" (subscript_expression "param_6[0xf]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0xc] = local_94;" (assignment_expression "param_6[0xc] = local_94" (subscript_expression "param_6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[8] = local_a4;" (assignment_expression "param_6[8] = local_a4" (subscript_expression "param_6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0xd] = local_8c;" (assignment_expression "param_6[0xd] = local_8c" (subscript_expression "param_6[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[9] = (byte)local_9c;" (assignment_expression "param_6[9] = (byte)local_9c" (subscript_expression "param_6[9]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0xe] = local_ac;" (assignment_expression "param_6[0xe] = local_ac" (subscript_expression "param_6[0xe]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" identifier = (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) * (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) ))))) + (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) ;) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }" { (expression_statement "param_6[0x10] = SUB81(dVar5,0);" (assignment_expression "param_6[0x10] = SUB81(dVar5,0)" (subscript_expression "param_6[0x10]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0x14] = bVar15;" (assignment_expression "param_6[0x14] = bVar15" (subscript_expression "param_6[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x11] = local_ac;" (assignment_expression "param_6[0x11] = local_ac" (subscript_expression "param_6[0x11]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x12] = local_8c;" (assignment_expression "param_6[0x12] = local_8c" (subscript_expression "param_6[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x13] = local_94;" (assignment_expression "param_6[0x13] = local_94" (subscript_expression "param_6[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x15] = bVar13;" (assignment_expression "param_6[0x15] = bVar13" (subscript_expression "param_6[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x16] = (byte)local_9c;" (assignment_expression "param_6[0x16] = (byte)local_9c" (subscript_expression "param_6[0x16]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0x17] = local_a4;" (assignment_expression "param_6[0x17] = local_a4" (subscript_expression "param_6[0x17]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" else (compound_statement "{\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" { (expression_statement "param_6[0x13] = bVar15;" (assignment_expression "param_6[0x13] = bVar15" (subscript_expression "param_6[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x17] = SUB81(dVar5,0);" (assignment_expression "param_6[0x17] = SUB81(dVar5,0)" (subscript_expression "param_6[0x17]" identifier [ number_literal ]) = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "param_6[0x10] = local_a4;" (assignment_expression "param_6[0x10] = local_a4" (subscript_expression "param_6[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x11] = (byte)local_9c;" (assignment_expression "param_6[0x11] = (byte)local_9c" (subscript_expression "param_6[0x11]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0x12] = bVar13;" (assignment_expression "param_6[0x12] = bVar13" (subscript_expression "param_6[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x14] = local_94;" (assignment_expression "param_6[0x14] = local_94" (subscript_expression "param_6[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x15] = local_8c;" (assignment_expression "param_6[0x15] = local_8c" (subscript_expression "param_6[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x16] = local_ac;" (assignment_expression "param_6[0x16] = local_ac" (subscript_expression "param_6[0x16]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "dVar5 = dVar3;" (assignment_expression "dVar5 = dVar3" identifier = identifier) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }" { (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" identifier = (binary_expression "dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "dVar5 * *(double *)(param_2 + 0x11)" identifier * (pointer_expression "*(double *)(param_2 + 0x11)" * (cast_expression "(double *)(param_2 + 0x11)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x11)" ( (binary_expression "param_2 + 0x11" identifier + number_literal) ))))) + (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x38)" ( (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = SUB81(dVar5,0);" (assignment_expression "local_ac = SUB81(dVar5,0)" identifier = (call_expression "SUB81(dVar5,0)" identifier (argument_list "(dVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "bVar15 = local_ac;" (assignment_expression "bVar15 = local_ac" identifier = identifier) ;) (expression_statement "bVar9 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar9 = (byte)((ulonglong)dVar5 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x20)" ( (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar8 = (byte)((ulonglong)dVar5 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x28)" ( (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" identifier . field_identifier) = (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x30)" ( (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x18)" ( (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 0x10)" ( (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar5 >> 8)" ( (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" if (parenthesized_expression "(param_2[0x10] == 1)" ( (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }" { (expression_statement "param_6[0x18] = bVar15;" (assignment_expression "param_6[0x18] = bVar15" (subscript_expression "param_6[0x18]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1c] = bVar9;" (assignment_expression "param_6[0x1c] = bVar9" (subscript_expression "param_6[0x1c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x19] = local_ac;" (assignment_expression "param_6[0x19] = local_ac" (subscript_expression "param_6[0x19]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1a] = local_8c;" (assignment_expression "param_6[0x1a] = local_8c" (subscript_expression "param_6[0x1a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1b] = local_94;" (assignment_expression "param_6[0x1b] = local_94" (subscript_expression "param_6[0x1b]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1d] = bVar8;" (assignment_expression "param_6[0x1d] = bVar8" (subscript_expression "param_6[0x1d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1e] = (byte)local_9c;" (assignment_expression "param_6[0x1e] = (byte)local_9c" (subscript_expression "param_6[0x1e]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" else (compound_statement "{\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" { (expression_statement "param_6[0x1b] = bVar9;" (assignment_expression "param_6[0x1b] = bVar9" (subscript_expression "param_6[0x1b]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x18] = bVar13;" (assignment_expression "param_6[0x18] = bVar13" (subscript_expression "param_6[0x18]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x19] = (byte)local_9c;" (assignment_expression "param_6[0x19] = (byte)local_9c" (subscript_expression "param_6[0x19]" identifier [ number_literal ]) = (cast_expression "(byte)local_9c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_6[0x1a] = bVar8;" (assignment_expression "param_6[0x1a] = bVar8" (subscript_expression "param_6[0x1a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1c] = local_94;" (assignment_expression "param_6[0x1c] = local_94" (subscript_expression "param_6[0x1c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1d] = local_8c;" (assignment_expression "param_6[0x1d] = local_8c" (subscript_expression "param_6[0x1d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_6[0x1e] = local_ac;" (assignment_expression "param_6[0x1e] = local_ac" (subscript_expression "param_6[0x1e]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" identifier = identifier) ;) }))) (expression_statement "param_6[0x1f] = bVar13;" (assignment_expression "param_6[0x1f] = bVar13" (subscript_expression "param_6[0x1f]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9] + 0x20;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x20" identifier = (binary_expression "param_6 + param_2[9] + 0x20" (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ])) + number_literal)) ;) }) while (parenthesized_expression "(local_b4 != param_3)" ( (binary_expression "local_b4 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) }))) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (if_statement "if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }" if (parenthesized_expression "(uVar18 < 0x41)" ( (binary_expression "uVar18 < 0x41" identifier < number_literal) )) (compound_statement "{\n    uVar20 = uVar18;\n  }" { (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" identifier = identifier) ;) })) (expression_statement "bVar13 = (byte)(uVar20 - 1);" (assignment_expression "bVar13 = (byte)(uVar20 - 1)" identifier = (call_expression "(byte)(uVar20 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar20 - 1)" ( (binary_expression "uVar20 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar15 = bVar13 & 0x1f;" (assignment_expression "bVar15 = bVar13 & 0x1f" identifier = (binary_expression "bVar13 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar10 = 2 << (bVar13 & 0x1f);" (assignment_expression "uVar10 = 2 << (bVar13 & 0x1f)" identifier = (binary_expression "2 << (bVar13 & 0x1f)" number_literal << (parenthesized_expression "(bVar13 & 0x1f)" ( (binary_expression "bVar13 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar21 = uVar10;" (assignment_expression "uVar21 = uVar10" identifier = identifier) ;) (expression_statement "uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;" (assignment_expression "uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15" identifier = (binary_expression "0 << bVar15 | 2U >> 0x20 - bVar15" (binary_expression "0 << bVar15" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar15" number_literal >> (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }" if (parenthesized_expression "((uVar20 - 1 & 0x20) != 0)" ( (binary_expression "(uVar20 - 1 & 0x20) != 0" (parenthesized_expression "(uVar20 - 1 & 0x20)" ( (binary_expression "uVar20 - 1 & 0x20" (binary_expression "uVar20 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) })) (expression_statement "local_7c = uVar21 - 1;" (assignment_expression "local_7c = uVar21 - 1" identifier = (binary_expression "uVar21 - 1" identifier - number_literal)) ;) (expression_statement "iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);" (assignment_expression "iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0)" identifier = (binary_expression "(uVar12 - 1) + (uint)(uVar21 != 0)" (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar21 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) ))))) ;) (labeled_statement "LAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }" statement_identifier : (if_statement "if (param_3 < 1) {\n    return;\n  }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (do_statement "do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );" do (compound_statement "{\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x20) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x20) * 8" (pointer_expression "*(int *)(iVar19 + 0x20)" * (cast_expression "(int *)(iVar19 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x20)" ( (binary_expression "iVar19 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" else (compound_statement "{\n          local_84 = (longlong)ROUND(dVar3);\n        }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (if_statement "if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) (if_statement "if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00163e10;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00163e10;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" { (do_statement "do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" do (compound_statement "{\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      }" { (while_statement "while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar18;\n          }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar18 = uVar21;\n          }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_6 = 0;\n          }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" identifier = (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" { (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar15 = 0;\n          }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00163de4;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00163de4;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\n        local_84 = 0;\n      }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00163e10:\n        local_84 = 0;" statement_identifier : (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;)) (if_statement "if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" else (compound_statement "{\n              local_84 = (longlong)ROUND(dVar3);\n            }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) }))) (if_statement "if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) }))) (if_statement "if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }" { (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" identifier + (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (!NAN(dVar3)) goto LAB_00163fd8;" if (parenthesized_expression "(!NAN(dVar3))" ( (unary_expression "!NAN(dVar3)" ! (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier )))) )) (goto_statement "goto LAB_00163fd8;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" else (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" { (do_statement "do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" do (compound_statement "{\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      }" { (while_statement "while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar18;\n          }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar18 = uVar21;\n          }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_6 = 0;\n          }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" identifier = (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" { (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar15 = 0;\n          }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00163fac;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00163fac;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" identifier + (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(dVar3))" ( (call_expression "NAN(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))) )) (compound_statement "{\n        local_84 = 0;\n      }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00163fd8:\n        local_84 = 0;" statement_identifier : (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;)) (if_statement "if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" { (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;) (if_statement "if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" else (compound_statement "{\n              local_84 = (longlong)ROUND(dVar3);\n            }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) })) }))) (if_statement "if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) }))) (if_statement "if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }" if (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }" { (do_statement "do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" do (compound_statement "{\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      }" { (while_statement "while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) (if_statement "if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }" if (parenthesized_expression "(uVar20 <= uVar18)" ( (binary_expression "uVar20 <= uVar18" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar20;\n          }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar18 = uVar21;\n          }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_6 = 0;\n          }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" identifier = (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" { (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar15 = 0;\n          }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 != 0) break;" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) (if_statement "if ((int)uVar21 < 1) goto LAB_00164174;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00164174;" goto statement_identifier ;)) })) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);" statement_identifier : (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;)) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (if_statement "if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" if (parenthesized_expression "(*(int *)(iVar19 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar19 + 0x34) == 0" (pointer_expression "*(int *)(iVar19 + 0x34)" * (cast_expression "(int *)(iVar19 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" { (expression_statement "dVar3 = (double)DAT_002df8a8;" (assignment_expression "dVar3 = (double)DAT_002df8a8" identifier = (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);" statement_identifier : (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" identifier = (cast_expression "(float)CONCAT44(iStack_78,local_7c)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_78,local_7c)" identifier (argument_list "(iStack_78,local_7c)" ( identifier , identifier ))))) ;)) (if_statement "if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" if (parenthesized_expression "(iStack_78 < 0)" ( (binary_expression "iStack_78 < 0" identifier < number_literal) )) (compound_statement "{\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" { (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" identifier = (binary_expression "fVar1 + DAT_002df8b0" identifier + identifier)) ;) })) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" identifier = number_literal) ;) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" identifier = (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" ( (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" if (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" ( (binary_expression "dVar3 < (double)DAT_002df8b0" identifier < (cast_expression "(double)DAT_002df8b0" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" { (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" identifier = (binary_expression "dVar3 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" if (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" ( (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }" { (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" identifier (argument_list "(dVar3 - (double)DAT_002df2c8)" ( (binary_expression "dVar3 - (double)DAT_002df2c8" identifier - (cast_expression "(double)DAT_002df2c8" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" identifier (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) , (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" else (compound_statement "{\n          local_84 = (longlong)ROUND(dVar3);\n        }" { (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) })) }) (else_clause "else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" else (compound_statement "{\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" * (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x38) * 8)" ( (binary_expression "param_5 + *(int *)(iVar19 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar19 + 0x38) * 8" (pointer_expression "*(int *)(iVar19 + 0x38)" * (cast_expression "(int *)(iVar19 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x38)" ( (binary_expression "iVar19 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar3) goto LAB_00164302;" if (parenthesized_expression "(0.0 < dVar3)" ( (binary_expression "0.0 < dVar3" number_literal < identifier) )) (goto_statement "goto LAB_00164302;" goto statement_identifier ;)) }))) (if_statement "if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" { (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" identifier = number_literal) ;) })) (if_statement "if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }" if (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }" { (while_statement "while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }" { (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }" if (parenthesized_expression "(uVar18 <= uVar20)" ( (binary_expression "uVar18 <= uVar20" identifier <= identifier) )) (compound_statement "{\n          uVar12 = uVar18;\n        }" { (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" identifier = (binary_expression "uVar18 - uVar12" identifier - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }" if (parenthesized_expression "(-1 < (int)uVar21)" ( (binary_expression "-1 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar18 = uVar21;\n        }" { (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" identifier = identifier) ;) })) (if_statement "if (uVar20 == 8) {\n          *param_6 = 0;\n        }" if (parenthesized_expression "(uVar20 == 8)" ( (binary_expression "uVar20 == 8" identifier == number_literal) )) (compound_statement "{\n          *param_6 = 0;\n        }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" identifier = (binary_expression "uVar20 - uVar12" identifier - identifier)) ;) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" identifier = (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" identifier = (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" identifier . field_identifier) << (binary_expression "0x20 - bVar15" number_literal - identifier)))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }" { (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" identifier = (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" identifier . field_identifier) >> (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" ( (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" ( (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          bVar15 = 0;\n        }" { (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) })) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" * identifier) | identifier)) ;) (if_statement "if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }" { (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((int)uVar21 < 1) break;" if (parenthesized_expression "((int)uVar21 < 1)" ( (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) })) })) (expression_statement "local_6c = local_6c + 1;" (assignment_expression "local_6c = local_6c + 1" identifier = (binary_expression "local_6c + 1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" identifier = (binary_expression "param_6 + param_2[9]" identifier + (subscript_expression "param_2[9]" identifier [ number_literal ]))) ;) (if_statement "if (local_6c == param_3) {\n      return;\n    }" if (parenthesized_expression "(local_6c == param_3)" ( (binary_expression "local_6c == param_3" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) ))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) )))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }))))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }))))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }))))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }))) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) (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 IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }))) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) )))) & LIT) )))) ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) )))) & LIT) )))) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) % LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * IDENT) )) / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) )))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << LIT))) ;) }))) })) }) (else_clause else (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 = (binary_expression (parenthesized_expression ( (binary_expression IDENT * IDENT) )) / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) )))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << LIT))) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * IDENT) )) / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) )))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << LIT))) ;) }))) })))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) == IDENT) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) & LIT) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) & LIT) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) & LIT) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) & LIT) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! (call_expression IDENT (argument_list ( IDENT )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression LIT << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! (call_expression IDENT (argument_list ( IDENT )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression LIT << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression LIT << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression 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 IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression LIT << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (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 (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) + (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) + (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) + (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) + (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << IDENT) | (binary_expression LIT >> (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + LIT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }))) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! (call_expression IDENT (argument_list ( IDENT )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> IDENT) | (binary_expression (field_expression IDENT . field_identifier) << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + LIT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }))) })) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! (call_expression IDENT (argument_list ( IDENT )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> IDENT) | (binary_expression (field_expression IDENT . field_identifier) << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + LIT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }))) })) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> IDENT) | (binary_expression (field_expression IDENT . field_identifier) << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression 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 IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + LIT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> IDENT) | (binary_expression (field_expression IDENT . field_identifier) << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void __regparm2\nFUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)\n\n{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  byte bVar8;\n  byte bVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  byte bVar13;\n  int iVar14;\n  byte bVar15;\n  byte bVar16;\n  byte bVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  float fVar22;\n  uint local_b4;\n  byte local_ac;\n  byte local_a4;\n  int local_9c;\n  byte local_94;\n  byte local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (param_7 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar18 = *param_2;\n  if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }\n  uVar20 = 0;\n  if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }\n  bVar13 = (byte)(uVar20 - 1);\n  bVar15 = bVar13 & 0x1f;\n  uVar10 = 2 << (bVar13 & 0x1f);\n  uVar21 = uVar10;\n  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;\n  if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }\n  local_7c = uVar21 - 1;\n  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);\nLAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );\n}" (primitive_type "void") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "FUN_00163920(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)" (identifier "FUN_00163920") (parameter_list "(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,\n            int param_7)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "byte *param_6" (type_identifier "byte") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) () ")"))) (compound_statement "{\n  float fVar1;\n  longlong lVar2;\n  double dVar3;\n  float fVar4;\n  double dVar5;\n  char cVar6;\n  char cVar7;\n  byte bVar8;\n  byte bVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  byte bVar13;\n  int iVar14;\n  byte bVar15;\n  byte bVar16;\n  byte bVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  float fVar22;\n  uint local_b4;\n  byte local_ac;\n  byte local_a4;\n  int local_9c;\n  byte local_94;\n  byte local_8c;\n  undefined8 local_84;\n  int local_7c;\n  int iStack_78;\n  uint local_74;\n  int local_6c;\n  uint local_5c;\n  uint local_54;\n  uint local_4c;\n  uint local_44;\n  uint local_34;\n  \n  dVar5 = DAT_002e8160;\n  fVar1 = DAT_002df8a8;\n  dVar3 = _DAT_002df2e0;\n  if (param_7 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }\n  if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }\n  uVar18 = *param_2;\n  if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }\n  if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }\n  uVar20 = 0;\n  if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }\n  bVar13 = (byte)(uVar20 - 1);\n  bVar15 = bVar13 & 0x1f;\n  uVar10 = 2 << (bVar13 & 0x1f);\n  uVar21 = uVar10;\n  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;\n  if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }\n  local_7c = uVar21 - 1;\n  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);\nLAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }\n  local_6c = 0;\n  do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );\n}" ({ "{") (declaration "float fVar1;" (primitive_type "float") (identifier "fVar1") (; ";")) (declaration "longlong lVar2;" (type_identifier "longlong") (identifier "lVar2") (; ";")) (declaration "double dVar3;" (primitive_type "double") (identifier "dVar3") (; ";")) (declaration "float fVar4;" (primitive_type "float") (identifier "fVar4") (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (declaration "char cVar6;" (primitive_type "char") (identifier "cVar6") (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "byte bVar15;" (type_identifier "byte") (identifier "bVar15") (; ";")) (declaration "byte bVar16;" (type_identifier "byte") (identifier "bVar16") (; ";")) (declaration "byte bVar17;" (type_identifier "byte") (identifier "bVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "float fVar22;" (primitive_type "float") (identifier "fVar22") (; ";")) (declaration "uint local_b4;" (type_identifier "uint") (identifier "local_b4") (; ";")) (declaration "byte local_ac;" (type_identifier "byte") (identifier "local_ac") (; ";")) (declaration "byte local_a4;" (type_identifier "byte") (identifier "local_a4") (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "byte local_94;" (type_identifier "byte") (identifier "local_94") (; ";")) (declaration "byte local_8c;" (type_identifier "byte") (identifier "local_8c") (; ";")) (declaration "undefined8 local_84;" (type_identifier "undefined8") (identifier "local_84") (; ";")) (declaration "int local_7c;" (primitive_type "int") (identifier "local_7c") (; ";")) (declaration "int iStack_78;" (primitive_type "int") (identifier "iStack_78") (; ";")) (declaration "uint local_74;" (type_identifier "uint") (identifier "local_74") (; ";")) (declaration "int local_6c;" (primitive_type "int") (identifier "local_6c") (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (expression_statement "dVar5 = DAT_002e8160;" (assignment_expression "dVar5 = DAT_002e8160" (identifier "dVar5") (= "=") (identifier "DAT_002e8160")) (; ";")) (expression_statement "fVar1 = DAT_002df8a8;" (assignment_expression "fVar1 = DAT_002df8a8" (identifier "fVar1") (= "=") (identifier "DAT_002df8a8")) (; ";")) (expression_statement "dVar3 = _DAT_002df2e0;" (assignment_expression "dVar3 = _DAT_002df2e0" (identifier "dVar3") (= "=") (identifier "_DAT_002df2e0")) (; ";")) (if_statement "if (param_7 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }" (if "if") (parenthesized_expression "(param_7 == 0)" (( "(") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");\n  }" ({ "{") (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum")" (identifier "__assert_fail") (argument_list "("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,\n                  "ExportBGRAQuantum")" (( "(") (string_literal ""exception != (ExceptionInfo *) NULL"" (" """) (string_content "exception != (ExceptionInfo *) NULL") (" """)) (, ",") (string_literal ""MagickCore/quantum-export.c"" (" """) (string_content "MagickCore/quantum-export.c") (" """)) (, ",") (number_literal "0x291") (, ",") (string_literal ""ExportBGRAQuantum"" (" """) (string_content "ExportBGRAQuantum") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_7 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }" (if "if") (parenthesized_expression "(*(int *)(param_7 + 0x1c) != -0x54535255)" (( "(") (binary_expression "*(int *)(param_7 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_7 + 0x1c)" (* "*") (cast_expression "(int *)(param_7 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 0x1c)" (( "(") (binary_expression "param_7 + 0x1c" (identifier "param_7") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");\n  }" ({ "{") (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum");" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum")" (identifier "__assert_fail") (argument_list "("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,\n                  "ExportBGRAQuantum")" (( "(") (string_literal ""exception->signature == MagickCoreSignature"" (" """) (string_content "exception->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""MagickCore/quantum-export.c"" (" """) (string_content "MagickCore/quantum-export.c") (" """)) (, ",") (number_literal "0x292") (, ",") (string_literal ""ExportBGRAQuantum"" (" """) (string_content "ExportBGRAQuantum") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (uVar18 == 0x10) {\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }" (if "if") (parenthesized_expression "(uVar18 == 0x10)" (( "(") (binary_expression "uVar18 == 0x10" (identifier "uVar18") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n    if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }\n    if (param_3 < 1) {\n      return;\n    }\n    local_b4 = 0;\n    do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );\n  }" ({ "{") (if_statement "if (param_2[2] == 1) {\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }" (if "if") (parenthesized_expression "(param_2[2] == 1)" (( "(") (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);\n      return;\n    }" ({ "{") (if_statement "if (param_3 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      } while (local_b4 != param_3);" (do "do") (compound_statement "{\n        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        *param_6 = (byte)uVar18;\n        param_6[1] = (byte)uVar20;\n        dVar5 = _DAT_002df2e0;\n        uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));\n        uVar18 = uVar12 >> 8 & 0xff;\n        uVar20 = uVar12;\n        if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }\n        param_6[2] = (byte)uVar18;\n        param_6[3] = (byte)uVar20;\n        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        param_6[4] = bVar15;\n        param_6[5] = (byte)uVar18;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }\n        uVar18 = FUN_001533f0(fVar1);\n        bVar15 = (byte)(uVar18 >> 8);\n        if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }\n        local_b4 = local_b4 + 1;\n        param_6[6] = bVar15;\n        param_6[7] = (byte)uVar18;\n        param_6 = param_6 + param_2[9] + 8;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      }" ({ "{") (expression_statement "uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));" (assignment_expression "uVar12 = FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" (identifier "uVar12") (= "=") (call_expression "FUN_001533f0((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" (identifier "FUN_001533f0") (argument_list "((float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)))" (( "(") (cast_expression "(float)((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8))" (( "(") (binary_expression "(longdouble)dVar3 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (binary_expression "(longdouble)dVar3 *\n                                     (longdouble)" (cast_expression "(longdouble)dVar3" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "dVar3")) (* "*") (parenthesized_expression "(longdouble)" (( "(") (identifier "longdouble") () ")"))) (* "*") (cast_expression "(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) () ")"))) () ")")))) (; ";")) (expression_statement "uVar18 = uVar12 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar12 >> 8 & 0xff" (identifier "uVar18") (= "=") (binary_expression "uVar12 >> 8 & 0xff" (binary_expression "uVar12 >> 8" (identifier "uVar12") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "uVar20 = uVar12;" (assignment_expression "uVar20 = uVar12" (identifier "uVar20") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" ({ "{") (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" (identifier "uVar20") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar18 = uVar12;" (assignment_expression "uVar18 = uVar12" (identifier "uVar18") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "*param_6 = (byte)uVar18;" (assignment_expression "*param_6 = (byte)uVar18" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "param_6[1] = (byte)uVar20;" (assignment_expression "param_6[1] = (byte)uVar20" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "dVar5 = _DAT_002df2e0;" (assignment_expression "dVar5 = _DAT_002df2e0" (identifier "dVar5") (= "=") (identifier "_DAT_002df2e0")) (; ";")) (expression_statement "uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0));" (assignment_expression "uVar12 = FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" (identifier "uVar12") (= "=") (call_expression "FUN_001533f0((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" (identifier "FUN_001533f0") (argument_list "((float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0))" (( "(") (cast_expression "(float)((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0)" (( "(") (binary_expression "(longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                                     (longdouble)_DAT_002df2e0" (binary_expression "(longdouble)\n                                      *(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (parenthesized_expression "(longdouble)" (( "(") (identifier "longdouble") () ")")) (* "*") (cast_expression "(double *)\n                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (* "*") (cast_expression "(longdouble)_DAT_002df2e0" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "_DAT_002df2e0"))) () ")"))) () ")")))) (; ";")) (expression_statement "uVar18 = uVar12 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar12 >> 8 & 0xff" (identifier "uVar18") (= "=") (binary_expression "uVar12 >> 8 & 0xff" (binary_expression "uVar12 >> 8" (identifier "uVar12") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "uVar20 = uVar12;" (assignment_expression "uVar20 = uVar12" (identifier "uVar20") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          uVar20 = uVar18;\n          uVar18 = uVar12;\n        }" ({ "{") (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" (identifier "uVar20") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar18 = uVar12;" (assignment_expression "uVar18 = uVar12" (identifier "uVar18") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "param_6[2] = (byte)uVar18;" (assignment_expression "param_6[2] = (byte)uVar18" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));" (assignment_expression "uVar18 = FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" (identifier "uVar18") (= "=") (call_expression "FUN_001533f0((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" (identifier "FUN_001533f0") (argument_list "((float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)))" (( "(") (cast_expression "(float)((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8))" (( "(") (binary_expression "(longdouble)dVar5 *\n                                     (longdouble)\n                                     *(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (binary_expression "(longdouble)dVar5 *\n                                     (longdouble)" (cast_expression "(longdouble)dVar5" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "dVar5")) (* "*") (parenthesized_expression "(longdouble)" (( "(") (identifier "longdouble") () ")"))) (* "*") (cast_expression "(double *)\n                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")")))) () ")"))) () ")")))) (; ";")) (expression_statement "bVar15 = (byte)(uVar18 >> 8);" (assignment_expression "bVar15 = (byte)(uVar18 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar18 >> 8)" (( "(") (binary_expression "uVar18 >> 8" (identifier "uVar18") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" ({ "{") (expression_statement "bVar15 = (byte)uVar18;" (assignment_expression "bVar15 = (byte)uVar18" (identifier "bVar15") (= "=") (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar18 = uVar18 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar18 >> 8 & 0xff" (identifier "uVar18") (= "=") (binary_expression "uVar18 >> 8 & 0xff" (binary_expression "uVar18 >> 8" (identifier "uVar18") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff"))) (; ";")) (} "}"))) (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" (identifier "param_6") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[5] = (byte)uVar18;" (assignment_expression "param_6[5] = (byte)uVar18" (subscript_expression "param_6[5]" (identifier "param_6") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18"))) (; ";")) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\n          fVar1 = 1.0;\n        }\n        else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          fVar1 = 1.0;\n        }" ({ "{") (expression_statement "fVar1 = 1.0;" (assignment_expression "fVar1 = 1.0" (identifier "fVar1") (= "=") (number_literal "1.0")) (; ";")) (} "}")) (else_clause "else {\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" (else "else") (compound_statement "{\n          fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));\n        }" ({ "{") (expression_statement "fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));" (assignment_expression "fVar1 = (float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" (identifier "fVar1") (= "=") (cast_expression "(float)((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8))" (( "(") (binary_expression "(longdouble)_DAT_002df2e0 *\n                         (longdouble)\n                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (binary_expression "(longdouble)_DAT_002df2e0 *\n                         (longdouble)" (cast_expression "(longdouble)_DAT_002df2e0" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "_DAT_002df2e0")) (* "*") (parenthesized_expression "(longdouble)" (( "(") (identifier "longdouble") () ")"))) (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar18 = FUN_001533f0(fVar1);" (assignment_expression "uVar18 = FUN_001533f0(fVar1)" (identifier "uVar18") (= "=") (call_expression "FUN_001533f0(fVar1)" (identifier "FUN_001533f0") (argument_list "(fVar1)" (( "(") (identifier "fVar1") () ")")))) (; ";")) (expression_statement "bVar15 = (byte)(uVar18 >> 8);" (assignment_expression "bVar15 = (byte)(uVar18 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar18 >> 8)" (( "(") (binary_expression "uVar18 >> 8" (identifier "uVar18") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          bVar15 = (byte)uVar18;\n          uVar18 = uVar18 >> 8 & 0xff;\n        }" ({ "{") (expression_statement "bVar15 = (byte)uVar18;" (assignment_expression "bVar15 = (byte)uVar18" (identifier "bVar15") (= "=") (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar18 = uVar18 >> 8 & 0xff;" (assignment_expression "uVar18 = uVar18 >> 8 & 0xff" (identifier "uVar18") (= "=") (binary_expression "uVar18 >> 8 & 0xff" (binary_expression "uVar18 >> 8" (identifier "uVar18") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff"))) (; ";")) (} "}"))) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" (identifier "local_b4") (= "=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6[6] = bVar15;" (assignment_expression "param_6[6] = bVar15" (subscript_expression "param_6[6]" (identifier "param_6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[7] = (byte)uVar18;" (assignment_expression "param_6[7] = (byte)uVar18" (subscript_expression "param_6[7]" (identifier "param_6") ([ "[") (number_literal "7") (] "]")) (= "=") (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9] + 8;" (assignment_expression "param_6 = param_6 + param_2[9] + 8" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9] + 8" (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_b4 != param_3)" (( "(") (binary_expression "local_b4 != param_3" (identifier "local_b4") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_3 < 1) {\n      return;\n    }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    } while( true );" (do "do") (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = bVar15;\n      bVar9 = (byte)iVar19;\n      if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }\n      param_6[1] = bVar13;\n      *param_6 = bVar9;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[3] = bVar13;\n      param_6[2] = bVar15;\n      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n      if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }\n      bVar13 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }\n      param_6[5] = bVar13;\n      param_6[4] = bVar15;\n      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }\n      bVar15 = (byte)iVar19;\n      if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }\n      param_6[7] = bVar15;\n      local_b4 = local_b4 + 1;\n      param_6[6] = local_ac;\n      param_6 = param_6 + param_2[9] + 8;\n      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n      if (local_b4 == param_3) {\n        return;\n      }\n    }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (else "else") (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (if "if") (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" ({ "{") (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" (identifier "iVar19") (= "=") (number_literal "-1")) (; ";")) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (} "}")) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (else "else") (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" ({ "{") (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "iVar19") (= "=") (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")"))))) (; ";")) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)iVar19 >> 8)" (( "(") (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}")))))) (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" (identifier "bVar13") (= "=") (identifier "bVar15")) (; ";")) (expression_statement "bVar9 = (byte)iVar19;" (assignment_expression "bVar9 = (byte)iVar19" (identifier "bVar9") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (if_statement "if (param_2[0x10] != 1) {\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }" (if "if") (parenthesized_expression "(param_2[0x10] != 1)" (( "(") (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        bVar13 = (byte)iVar19;\n        bVar9 = bVar15;\n      }" ({ "{") (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" (identifier "bVar13") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (expression_statement "bVar9 = bVar15;" (assignment_expression "bVar9 = bVar15" (identifier "bVar9") (= "=") (identifier "bVar15")) (; ";")) (} "}"))) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "*param_6 = bVar9;" (assignment_expression "*param_6 = bVar9" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (else "else") (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (if "if") (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" ({ "{") (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" (identifier "iVar19") (= "=") (number_literal "-1")) (; ";")) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (} "}")) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (else "else") (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" ({ "{") (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "iVar19") (= "=") (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")"))))) (; ";")) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)iVar19 >> 8)" (( "(") (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}")))))) (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" (identifier "bVar13") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" ({ "{") (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" (identifier "bVar13") (= "=") (identifier "bVar15")) (; ";")) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" (identifier "bVar15") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (} "}"))) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n        iVar19 = 0;\n        bVar15 = 0;\n      }\n      else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n        iVar19 = 0;\n        bVar15 = 0;\n      }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (else "else") (if_statement "if ((double)DAT_002df8a8 <= dVar3) {\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }\n      else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (if "if") (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n        iVar19 = -1;\n        bVar15 = 0xff;\n      }" ({ "{") (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" (identifier "iVar19") (= "=") (number_literal "-1")) (; ";")) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (} "}")) (else_clause "else {\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" (else "else") (compound_statement "{\n        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n        bVar15 = (byte)((uint)iVar19 >> 8);\n      }" ({ "{") (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "iVar19") (= "=") (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")"))))) (; ";")) (expression_statement "bVar15 = (byte)((uint)iVar19 >> 8);" (assignment_expression "bVar15 = (byte)((uint)iVar19 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)iVar19 >> 8)" (( "(") (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}")))))) (expression_statement "bVar13 = (byte)iVar19;" (assignment_expression "bVar13 = (byte)iVar19" (identifier "bVar13") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        bVar13 = bVar15;\n        bVar15 = (byte)iVar19;\n      }" ({ "{") (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" (identifier "bVar13") (= "=") (identifier "bVar15")) (; ";")) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" (identifier "bVar15") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (} "}"))) (expression_statement "param_6[5] = bVar13;" (assignment_expression "param_6[5] = bVar13" (subscript_expression "param_6[5]" (identifier "param_6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" (identifier "param_6") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }\n      else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00164f80:\n        iVar19 = -1;\n        local_ac = 0xff;\n      }" ({ "{") (labeled_statement "LAB_00164f80:\n        iVar19 = -1;" (statement_identifier "LAB_00164f80") (: ":") (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" (identifier "iVar19") (= "=") (number_literal "-1")) (; ";"))) (expression_statement "local_ac = 0xff;" (assignment_expression "local_ac = 0xff" (identifier "local_ac") (= "=") (number_literal "0xff")) (; ";")) (} "}")) (else_clause "else {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" (else "else") (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }\n      }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n          iVar19 = 0;\n          local_ac = 0;\n        }\n        else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n          iVar19 = 0;\n          local_ac = 0;\n        }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" (identifier "local_ac") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" (else "else") (compound_statement "{\n          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;\n          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);\n          local_ac = (byte)((uint)iVar19 >> 8);\n        }" ({ "{") (if_statement "if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;" (if "if") (parenthesized_expression "((double)DAT_002df8a8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df8a8 <= dVar3" (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")) (<= "<=") (identifier "dVar3")) () ")")) (goto_statement "goto LAB_00164f80;" (goto "goto") (statement_identifier "LAB_00164f80") (; ";"))) (expression_statement "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "iVar19") (= "=") (cast_expression "(int)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")"))))) (; ";")) (expression_statement "local_ac = (byte)((uint)iVar19 >> 8);" (assignment_expression "local_ac = (byte)((uint)iVar19 >> 8)" (identifier "local_ac") (= "=") (call_expression "(byte)((uint)iVar19 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)iVar19 >> 8)" (( "(") (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}")))) (} "}")))) (expression_statement "bVar15 = (byte)iVar19;" (assignment_expression "bVar15 = (byte)iVar19" (identifier "bVar15") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        bVar15 = local_ac;\n        local_ac = (byte)iVar19;\n      }" ({ "{") (expression_statement "bVar15 = local_ac;" (assignment_expression "bVar15 = local_ac" (identifier "bVar15") (= "=") (identifier "local_ac")) (; ";")) (expression_statement "local_ac = (byte)iVar19;" (assignment_expression "local_ac = (byte)iVar19" (identifier "local_ac") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (} "}"))) (expression_statement "param_6[7] = bVar15;" (assignment_expression "param_6[7] = bVar15" (subscript_expression "param_6[7]" (identifier "param_6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" (identifier "local_b4") (= "=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6[6] = local_ac;" (assignment_expression "param_6[6] = local_ac" (subscript_expression "param_6[6]" (identifier "param_6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6 = param_6 + param_2[9] + 8;" (assignment_expression "param_6 = param_6 + param_2[9] + 8" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9] + 8" (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (if_statement "if (local_b4 == param_3) {\n        return;\n      }" (if "if") (parenthesized_expression "(local_b4 == param_3)" (( "(") (binary_expression "local_b4 == param_3" (identifier "local_b4") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (if_statement "if (uVar18 < 0x11) {\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }\n  else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(uVar18 < 0x11)" (( "(") (binary_expression "uVar18 < 0x11" (identifier "uVar18") (< "<") (number_literal "0x11")) () ")")) (compound_statement "{\n    if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }\n    if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }\nLAB_001642d0:\n    local_7c = 0;\n    iStack_78 = 0;\n    if (uVar18 == 0) goto LAB_00163bfb;\n  }" ({ "{") (if_statement "if (uVar18 == 8) {\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }" (if "if") (parenthesized_expression "(uVar18 == 8)" (( "(") (binary_expression "uVar18 == 8" (identifier "uVar18") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n      if (param_3 < 1) {\n        return;\n      }\n      iVar19 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);\n      return;\n    }" ({ "{") (if_statement "if (param_3 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      } while (iVar19 != param_3);" (do "do") (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        *param_6 = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[1] = bVar15;\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        bVar15 = 0;\n        if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }\n        param_6[2] = bVar15;\n        bVar15 = 0xff;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }\n        param_6[3] = bVar15;\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 4;\n      }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" ({ "{") (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" (identifier "dVar3") (= "=") (binary_expression "dVar3 / (double)DAT_002e814c" (identifier "dVar3") (/ "/") (cast_expression "(double)DAT_002e814c" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e814c")))) (; ";")) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" (( "(") (binary_expression "dVar3 < (double)DAT_002e8150" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002e8150" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e8150"))) () ")")) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" ({ "{") (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "bVar15") (= "=") (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" ({ "{") (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" (identifier "dVar3") (= "=") (binary_expression "dVar3 / (double)DAT_002e814c" (identifier "dVar3") (/ "/") (cast_expression "(double)DAT_002e814c" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e814c")))) (; ";")) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" (( "(") (binary_expression "dVar3 < (double)DAT_002e8150" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002e8150" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e8150"))) () ")")) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" ({ "{") (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "bVar15") (= "=") (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar3) {\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n          dVar3 = dVar3 / (double)DAT_002e814c;\n          bVar15 = 0xff;\n          if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }\n        }" ({ "{") (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" (identifier "dVar3") (= "=") (binary_expression "dVar3 / (double)DAT_002e814c" (identifier "dVar3") (/ "/") (cast_expression "(double)DAT_002e814c" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e814c")))) (; ";")) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar3 < (double)DAT_002e8150) {\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002e8150)" (( "(") (binary_expression "dVar3 < (double)DAT_002e8150" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002e8150" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e8150"))) () ")")) (compound_statement "{\n            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n          }" ({ "{") (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "bVar15") (= "=") (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          bVar15 = 0;\n          if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }\n        }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar3) {\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n            dVar3 = dVar3 / (double)DAT_002e814c;\n            if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }\n          }" ({ "{") (expression_statement "dVar3 = dVar3 / (double)DAT_002e814c;" (assignment_expression "dVar3 = dVar3 / (double)DAT_002e814c" (identifier "dVar3") (= "=") (binary_expression "dVar3 / (double)DAT_002e814c" (identifier "dVar3") (/ "/") (cast_expression "(double)DAT_002e814c" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e814c")))) (; ";")) (if_statement "if ((double)DAT_002e8150 <= dVar3) {\n              bVar15 = 0xff;\n            }\n            else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" (if "if") (parenthesized_expression "((double)DAT_002e8150 <= dVar3)" (( "(") (binary_expression "(double)DAT_002e8150 <= dVar3" (cast_expression "(double)DAT_002e8150" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e8150")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n              bVar15 = 0xff;\n            }" ({ "{") (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (} "}")) (else_clause "else {\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" (else "else") (compound_statement "{\n              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);\n            }" ({ "{") (expression_statement "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "bVar15") (= "=") (cast_expression "(byte)(short)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (cast_expression "(short)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")")))))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9] + 4;" (assignment_expression "param_6 = param_6 + param_2[9] + 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9] + 4" (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 != param_3)" (( "(") (binary_expression "iVar19 != param_3" (identifier "iVar19") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar18 == 10) {\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(uVar18 == 10)" (( "(") (binary_expression "uVar18 == 10" (identifier "uVar18") (== "==") (number_literal "10")) () ")")) (compound_statement "{\n      if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }\n      if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }\n      iVar19 = 0;\n      if (param_3 < 1) {\n        return;\n      }\n      uVar18 = 10;\n      do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );\n    }" ({ "{") (if_statement "if (param_2[0xb] == 0) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }" (if "if") (parenthesized_expression "(param_2[0xb] == 0)" (( "(") (binary_expression "param_2[0xb] == 0" (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = 0;\n        iVar19 = 0;\n        do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );\n      }" ({ "{") (if_statement "if (param_3 < 1) {\n          return;\n        }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        } while( true );" (do "do") (compound_statement "{\n          iVar14 = 0;\n          do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);\n          iVar19 = iVar19 + 4;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (param_3 << 2 == iVar19) {\n            return;\n          }\n        }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          } while (iVar14 != 4);" (do "do") (compound_statement "{\n            iVar11 = *(int *)(param_1 + 0x2a8);\n            if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            uVar20 = (uint)(iVar14 + iVar19) % 3;\n            if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }\n            iVar14 = iVar14 + 1;\n          }" ({ "{") (expression_statement "iVar11 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x2a8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (if_statement "if (iVar14 == 2) {\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }\n            else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" (if "if") (parenthesized_expression "(iVar14 == 2)" (( "(") (binary_expression "iVar14 == 2" (identifier "iVar14") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n              iVar11 = *(int *)(iVar11 + 0x20);\nLAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar11 + 0x20);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x20)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar11 + 0x20)" (* "*") (cast_expression "(int *)(iVar11 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x20)" (( "(") (binary_expression "iVar11 + 0x20" (identifier "iVar11") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (labeled_statement "LAB_001644de:\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" (statement_identifier "LAB_001644de") (: ":") (expression_statement "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" (assignment_expression "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" (identifier "fVar1") (= "=") (cast_expression "(float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" (( "(") (binary_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff" (cast_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(*(double *)(param_5 + iVar11 * 8))" (identifier "ROUND") (argument_list "(*(double *)(param_5 + iVar11 * 8))" (( "(") (pointer_expression "*(double *)(param_5 + iVar11 * 8)" (* "*") (cast_expression "(double *)(param_5 + iVar11 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + iVar11 * 8)" (( "(") (binary_expression "param_5 + iVar11 * 8" (identifier "param_5") (+ "+") (binary_expression "iVar11 * 8" (identifier "iVar11") (* "*") (number_literal "8"))) () ")")))) () ")")))) (& "&") (number_literal "0xffffffff")) () ")")))) (; ";"))) (} "}")) (else_clause "else if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" (else "else") (if_statement "if (iVar14 == 3) {\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }\n            else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" (if "if") (parenthesized_expression "(iVar14 == 3)" (( "(") (binary_expression "iVar14 == 3" (identifier "iVar14") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n              fVar1 = DAT_002df8a8;\n              if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }\n            }" ({ "{") (expression_statement "fVar1 = DAT_002df8a8;" (assignment_expression "fVar1 = DAT_002df8a8" (identifier "fVar1") (= "=") (identifier "DAT_002df8a8")) (; ";")) (if_statement "if (*(int *)(iVar11 + 0x34) != 0) {\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }" (if "if") (parenthesized_expression "(*(int *)(iVar11 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(iVar11 + 0x34) != 0" (pointer_expression "*(int *)(iVar11 + 0x34)" (* "*") (cast_expression "(int *)(iVar11 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x34)" (( "(") (binary_expression "iVar11 + 0x34" (identifier "iVar11") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 0x38);\n                goto LAB_001644de;\n              }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar11 + 0x38);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x38)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar11 + 0x38)" (* "*") (cast_expression "(int *)(iVar11 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x38)" (( "(") (binary_expression "iVar11 + 0x38" (identifier "iVar11") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (goto_statement "goto LAB_001644de;" (goto "goto") (statement_identifier "LAB_001644de") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" (else "else") (compound_statement "{\n              if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }\n              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);\n            }" ({ "{") (if_statement "if (iVar14 == 1) {\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }\n              else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }" (if "if") (parenthesized_expression "(iVar14 == 1)" (( "(") (binary_expression "iVar14 == 1" (identifier "iVar14") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 0x14);\n              }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar11 + 0x14);" (assignment_expression "iVar11 = *(int *)(iVar11 + 0x14)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar11 + 0x14)" (* "*") (cast_expression "(int *)(iVar11 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x14)" (( "(") (binary_expression "iVar11 + 0x14" (identifier "iVar11") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                iVar11 = *(int *)(iVar11 + 8);\n              }" (else "else") (compound_statement "{\n                iVar11 = *(int *)(iVar11 + 8);\n              }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar11 + 8);" (assignment_expression "iVar11 = *(int *)(iVar11 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar11 + 8)" (* "*") (cast_expression "(int *)(iVar11 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 8)" (( "(") (binary_expression "iVar11 + 8" (identifier "iVar11") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (expression_statement "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);" (assignment_expression "fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" (identifier "fVar1") (= "=") (cast_expression "(float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff)" (( "(") (binary_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff" (cast_expression "(longlong)ROUND(*(double *)(param_5 + iVar11 * 8))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(*(double *)(param_5 + iVar11 * 8))" (identifier "ROUND") (argument_list "(*(double *)(param_5 + iVar11 * 8))" (( "(") (pointer_expression "*(double *)(param_5 + iVar11 * 8)" (* "*") (cast_expression "(double *)(param_5 + iVar11 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + iVar11 * 8)" (( "(") (binary_expression "param_5 + iVar11 * 8" (identifier "param_5") (+ "+") (binary_expression "iVar11 * 8" (identifier "iVar11") (* "*") (number_literal "8"))) () ")")))) () ")")))) (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (} "}")))))) (expression_statement "uVar20 = (uint)(iVar14 + iVar19) % 3;" (assignment_expression "uVar20 = (uint)(iVar14 + iVar19) % 3" (identifier "uVar20") (= "=") (binary_expression "(uint)(iVar14 + iVar19) % 3" (call_expression "(uint)(iVar14 + iVar19)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar14 + iVar19)" (( "(") (binary_expression "iVar14 + iVar19" (identifier "iVar14") (+ "+") (identifier "iVar19")) () ")"))) (% "%") (number_literal "3"))) (; ";")) (if_statement "if (uVar20 == 1) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }\n            else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" (if "if") (parenthesized_expression "(uVar20 == 1)" (( "(") (binary_expression "uVar20 == 1" (identifier "uVar20") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }\n            }" ({ "{") (if_statement "if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }" (if "if") (parenthesized_expression "(0.0 < fVar1)" (( "(") (binary_expression "0.0 < fVar1" (number_literal "0.0") (< "<") (identifier "fVar1")) () ")")) (compound_statement "{\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }\n              }" ({ "{") (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" (identifier "fVar1") (= "=") (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" (( "(") (binary_expression "fVar1 * DAT_003057bc" (identifier "fVar1") (* "*") (identifier "DAT_003057bc")) () ")")) (/ "/") (identifier "DAT_002df8a8"))) (; ";")) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffff000;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" (if "if") (parenthesized_expression "(DAT_002df8b0 <= fVar1)" (( "(") (binary_expression "DAT_002df8b0 <= fVar1" (identifier "DAT_002df8b0") (<= "<=") (identifier "fVar1")) () ")")) (compound_statement "{\n                  uVar18 = 0xfffff000;\n                }" ({ "{") (expression_statement "uVar18 = 0xfffff000;" (assignment_expression "uVar18 = 0xfffff000" (identifier "uVar18") (= "=") (number_literal "0xfffff000")) (; ";")) (} "}")) (else_clause "else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" (else "else") (compound_statement "{\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 0xc;\n                }" ({ "{") (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" (identifier "fVar1") (= "=") (binary_expression "fVar1 + DAT_002df2b8" (identifier "fVar1") (+ "+") (identifier "DAT_002df2b8"))) (; ";")) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" (if "if") (parenthesized_expression "(DAT_002df2c8 <= fVar1)" (( "(") (binary_expression "DAT_002df2c8 <= fVar1" (identifier "DAT_002df2c8") (<= "<=") (identifier "fVar1")) () ")")) (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar1 - DAT_002df2c8)" (identifier "ROUND") (argument_list "(fVar1 - DAT_002df2c8)" (( "(") (binary_expression "fVar1 - DAT_002df2c8" (identifier "fVar1") (- "-") (identifier "DAT_002df2c8")) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" (else "else") (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(fVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(fVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar1)" (identifier "ROUND") (argument_list "(fVar1)" (( "(") (identifier "fVar1") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar18 | local_34 << 0xc;" (assignment_expression "uVar18 = uVar18 | local_34 << 0xc" (identifier "uVar18") (= "=") (binary_expression "uVar18 | local_34 << 0xc" (identifier "uVar18") (| "|") (binary_expression "local_34 << 0xc" (identifier "local_34") (<< "<<") (number_literal "0xc")))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" (else "else") (if_statement "if (uVar20 == 2) {\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }\n            else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" (if "if") (parenthesized_expression "(uVar20 == 2)" (( "(") (binary_expression "uVar20 == 2" (identifier "uVar20") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n              if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }\n              bVar13 = (byte)(uVar18 >> 8);\n              bVar15 = (byte)(uVar18 >> 0x10);\n              local_a4 = (byte)(uVar18 >> 0x18);\n              if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }\n            }" ({ "{") (if_statement "if (0.0 < fVar1) {\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }" (if "if") (parenthesized_expression "(0.0 < fVar1)" (( "(") (binary_expression "0.0 < fVar1" (number_literal "0.0") (< "<") (identifier "fVar1")) () ")")) (compound_statement "{\n                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n                if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }\n              }" ({ "{") (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" (identifier "fVar1") (= "=") (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" (( "(") (binary_expression "fVar1 * DAT_003057bc" (identifier "fVar1") (* "*") (identifier "DAT_003057bc")) () ")")) (/ "/") (identifier "DAT_002df8a8"))) (; ";")) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                  uVar18 = 0xfffffffc;\n                }\n                else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" (if "if") (parenthesized_expression "(DAT_002df8b0 <= fVar1)" (( "(") (binary_expression "DAT_002df8b0 <= fVar1" (identifier "DAT_002df8b0") (<= "<=") (identifier "fVar1")) () ")")) (compound_statement "{\n                  uVar18 = 0xfffffffc;\n                }" ({ "{") (expression_statement "uVar18 = 0xfffffffc;" (assignment_expression "uVar18 = 0xfffffffc" (identifier "uVar18") (= "=") (number_literal "0xfffffffc")) (; ";")) (} "}")) (else_clause "else {\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" (else "else") (compound_statement "{\n                  fVar1 = fVar1 + DAT_002df2b8;\n                  if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }\n                  uVar18 = uVar18 | local_34 << 2;\n                }" ({ "{") (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" (identifier "fVar1") (= "=") (binary_expression "fVar1 + DAT_002df2b8" (identifier "fVar1") (+ "+") (identifier "DAT_002df2b8"))) (; ";")) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }\n                  else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" (if "if") (parenthesized_expression "(DAT_002df2c8 <= fVar1)" (( "(") (binary_expression "DAT_002df2c8 <= fVar1" (identifier "DAT_002df2c8") (<= "<=") (identifier "fVar1")) () ")")) (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                  }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar1 - DAT_002df2c8)" (identifier "ROUND") (argument_list "(fVar1 - DAT_002df2c8)" (( "(") (binary_expression "fVar1 - DAT_002df2c8" (identifier "fVar1") (- "-") (identifier "DAT_002df2c8")) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" (else "else") (compound_statement "{\n                    local_34 = (uint)(longlong)ROUND(fVar1);\n                  }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(fVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(fVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar1)" (identifier "ROUND") (argument_list "(fVar1)" (( "(") (identifier "fVar1") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar18 | local_34 << 2;" (assignment_expression "uVar18 = uVar18 | local_34 << 2" (identifier "uVar18") (= "=") (binary_expression "uVar18 | local_34 << 2" (identifier "uVar18") (| "|") (binary_expression "local_34 << 2" (identifier "local_34") (<< "<<") (number_literal "2")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "bVar13 = (byte)(uVar18 >> 8);" (assignment_expression "bVar13 = (byte)(uVar18 >> 8)" (identifier "bVar13") (= "=") (call_expression "(byte)(uVar18 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar18 >> 8)" (( "(") (binary_expression "uVar18 >> 8" (identifier "uVar18") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar15 = (byte)(uVar18 >> 0x10);" (assignment_expression "bVar15 = (byte)(uVar18 >> 0x10)" (identifier "bVar15") (= "=") (call_expression "(byte)(uVar18 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar18 >> 0x10)" (( "(") (binary_expression "uVar18 >> 0x10" (identifier "uVar18") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_a4 = (byte)(uVar18 >> 0x18);" (assignment_expression "local_a4 = (byte)(uVar18 >> 0x18)" (identifier "local_a4") (= "=") (call_expression "(byte)(uVar18 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar18 >> 0x18)" (( "(") (binary_expression "uVar18 >> 0x18" (identifier "uVar18") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }\n              else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                *param_6 = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar15;\n                param_6[1] = bVar13;\n                param_6[3] = local_a4;\n                param_6 = param_6 + 4;\n              }" ({ "{") (expression_statement "*param_6 = (byte)uVar18;" (assignment_expression "*param_6 = (byte)uVar18" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[3] = local_a4;" (assignment_expression "param_6[3] = local_a4" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" (identifier "param_6") (= "=") (binary_expression "param_6 + 4" (identifier "param_6") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (else_clause "else {\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" (else "else") (compound_statement "{\n                param_6[3] = (byte)uVar18;\n                uVar18 = 0;\n                param_6[2] = bVar13;\n                *param_6 = local_a4;\n                param_6[1] = bVar15;\n                param_6 = param_6 + 4;\n              }" ({ "{") (expression_statement "param_6[3] = (byte)uVar18;" (assignment_expression "param_6[3] = (byte)uVar18" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_6[2] = bVar13;" (assignment_expression "param_6[2] = bVar13" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "*param_6 = local_a4;" (assignment_expression "*param_6 = local_a4" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" (identifier "param_6") (= "=") (binary_expression "param_6 + 4" (identifier "param_6") (+ "+") (number_literal "4"))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" (else "else") (if_statement "if (0.0 < fVar1) {\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" (if "if") (parenthesized_expression "(0.0 < fVar1)" (( "(") (binary_expression "0.0 < fVar1" (number_literal "0.0") (< "<") (identifier "fVar1")) () ")")) (compound_statement "{\n              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;\n              if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }\n            }" ({ "{") (expression_statement "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;" (assignment_expression "fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8" (identifier "fVar1") (= "=") (binary_expression "(fVar1 * DAT_003057bc) / DAT_002df8a8" (parenthesized_expression "(fVar1 * DAT_003057bc)" (( "(") (binary_expression "fVar1 * DAT_003057bc" (identifier "fVar1") (* "*") (identifier "DAT_003057bc")) () ")")) (/ "/") (identifier "DAT_002df8a8"))) (; ";")) (if_statement "if (DAT_002df8b0 <= fVar1) {\n                uVar18 = uVar18 | 0xffc00000;\n              }\n              else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" (if "if") (parenthesized_expression "(DAT_002df8b0 <= fVar1)" (( "(") (binary_expression "DAT_002df8b0 <= fVar1" (identifier "DAT_002df8b0") (<= "<=") (identifier "fVar1")) () ")")) (compound_statement "{\n                uVar18 = uVar18 | 0xffc00000;\n              }" ({ "{") (expression_statement "uVar18 = uVar18 | 0xffc00000;" (assignment_expression "uVar18 = uVar18 | 0xffc00000" (identifier "uVar18") (= "=") (binary_expression "uVar18 | 0xffc00000" (identifier "uVar18") (| "|") (number_literal "0xffc00000"))) (; ";")) (} "}")) (else_clause "else {\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" (else "else") (compound_statement "{\n                fVar1 = fVar1 + DAT_002df2b8;\n                if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }\n                uVar18 = uVar18 | local_34 << 0x16;\n              }" ({ "{") (expression_statement "fVar1 = fVar1 + DAT_002df2b8;" (assignment_expression "fVar1 = fVar1 + DAT_002df2b8" (identifier "fVar1") (= "=") (binary_expression "fVar1 + DAT_002df2b8" (identifier "fVar1") (+ "+") (identifier "DAT_002df2b8"))) (; ";")) (if_statement "if (DAT_002df2c8 <= fVar1) {\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" (if "if") (parenthesized_expression "(DAT_002df2c8 <= fVar1)" (( "(") (binary_expression "DAT_002df2c8 <= fVar1" (identifier "DAT_002df2c8") (<= "<=") (identifier "fVar1")) () ")")) (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);\n                }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(fVar1 - DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(fVar1 - DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar1 - DAT_002df2c8)" (identifier "ROUND") (argument_list "(fVar1 - DAT_002df2c8)" (( "(") (binary_expression "fVar1 - DAT_002df2c8" (identifier "fVar1") (- "-") (identifier "DAT_002df2c8")) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" (else "else") (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(fVar1);\n                }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(fVar1);" (assignment_expression "local_34 = (uint)(longlong)ROUND(fVar1)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(fVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(fVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar1)" (identifier "ROUND") (argument_list "(fVar1)" (( "(") (identifier "fVar1") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar18 | local_34 << 0x16;" (assignment_expression "uVar18 = uVar18 | local_34 << 0x16" (identifier "uVar18") (= "=") (binary_expression "uVar18 | local_34 << 0x16" (identifier "uVar18") (| "|") (binary_expression "local_34 << 0x16" (identifier "local_34") (<< "<<") (number_literal "0x16")))) (; ";")) (} "}")))) (} "}"))))))) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar14 != 4)" (( "(") (binary_expression "iVar14 != 4" (identifier "iVar14") (!= "!=") (number_literal "4")) () ")")) (; ";")) (expression_statement "iVar19 = iVar19 + 4;" (assignment_expression "iVar19 = iVar19 + 4" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 4" (identifier "iVar19") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")))) (; ";")) (if_statement "if (param_3 << 2 == iVar19) {\n            return;\n          }" (if "if") (parenthesized_expression "(param_3 << 2 == iVar19)" (( "(") (binary_expression "param_3 << 2 == iVar19" (binary_expression "param_3 << 2" (identifier "param_3") (<< "<<") (number_literal "2")) (== "==") (identifier "iVar19")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (if_statement "if (param_2[1] == 0x20) {\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }" (if "if") (parenthesized_expression "(param_2[1] == 0x20)" (( "(") (binary_expression "param_2[1] == 0x20" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        uVar18 = param_2[0x14];\n        local_9c = 0;\n        local_74 = 10;\n        while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }\n        return;\n      }" ({ "{") (if_statement "if (param_3 < 1) {\n          return;\n        }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar18 = param_2[0x14];" (assignment_expression "uVar18 = param_2[0x14]" (identifier "uVar18") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_74 = 10;" (assignment_expression "local_74 = 10" (identifier "local_74") (= "=") (number_literal "10")) (; ";")) (while_statement "while( true ) {\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          local_b4 = 0;\n          iVar19 = *(int *)(param_1 + 0x2a8);\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n          if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }\n          local_b4 = 0x3ff;\n          if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }\n          if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }\n          local_9c = local_9c + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9];\n          if (local_9c == param_3) break;\n          local_74 = *param_2;\n        }" ({ "{") (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" (* "*") (cast_expression "(int *)(iVar19 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 8)" (( "(") (binary_expression "iVar19 + 8" (identifier "iVar19") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" ({ "{") (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" (identifier "local_b4") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" (( "(") (binary_expression "dVar3 * (double)DAT_003057bc" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_003057bc" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_003057bc"))) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")")))))) (; ";")) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" (identifier "local_b4") (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" (else "else") (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))))) (; ";")) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" (identifier "local_b4") (= "=") (identifier "local_34")) (; ";")) (} "}")))) (} "}"))) (} "}"))) (if_statement "if (uVar18 == 0) {\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            param_2[0x14] = 0x20;\n            uVar18 = 0x20;\n          }" ({ "{") (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0x20")) (; ";")) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" (identifier "uVar18") (= "=") (number_literal "0x20")) (; ";")) (} "}"))) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" (if "if") (parenthesized_expression "(0 < (int)local_74)" (( "(") (binary_expression "0 < (int)local_74" (number_literal "0") (< "<") (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74"))) () ")")) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" ({ "{") (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" (identifier "uVar12") (= "=") (identifier "local_74")) (; ";")) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" (do "do") (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" ({ "{") (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" (identifier "uVar21") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" (if "if") (parenthesized_expression "(uVar12 <= uVar18)" (( "(") (binary_expression "uVar12 <= uVar18" (identifier "uVar12") (<= "<=") (identifier "uVar18")) () ")")) (compound_statement "{\n                uVar21 = uVar12;\n              }" ({ "{") (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" (identifier "uVar21") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" (identifier "cVar6") (= "=") (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" (identifier "uVar12") (= "=") (binary_expression "uVar12 - uVar21" (identifier "uVar12") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" (* "*") (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" (( "(") (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")) (+ "+") (binary_expression "uVar21 * 4" (identifier "uVar21") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" (identifier "cVar7") (= "=") (cast_expression "(char)uVar18" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" (identifier "uVar18") (= "=") (binary_expression "uVar18 - uVar21" (identifier "uVar18") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (identifier "uVar20") (= "=") (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (identifier "uVar20") (| "|") (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" (( "(") (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" (identifier "local_b4") (>> ">>") (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" (( "(") (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_74")) (- "-") (identifier "cVar6")) (& "&") (number_literal "0x1fU")) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "(0x20U - cVar7 & 0x1f)" (( "(") (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" (number_literal "0x20U") (- "-") (identifier "cVar7")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" ({ "{") (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" (identifier "bVar15") (= "=") (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 0x18)" (( "(") (binary_expression "uVar20 >> 0x18" (identifier "uVar20") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" (identifier "local_ac") (= "=") (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 0x10)" (( "(") (binary_expression "uVar20 >> 0x10" (identifier "uVar20") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" (identifier "local_a4") (= "=") (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 8)" (( "(") (binary_expression "uVar20 >> 8" (identifier "uVar20") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" ({ "{") (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (} "}")) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" (else "else") (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" ({ "{") (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (} "}")))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" (identifier "local_74") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0x20")) (; ";")) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" (identifier "uVar18") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" (identifier "param_6") (= "=") (binary_expression "param_6 + 4" (identifier "param_6") (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar12)" (( "(") (binary_expression "0 < (int)uVar12" (number_literal "0") (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (; ";")) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" (* "*") (cast_expression "(int *)(iVar19 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x14)" (( "(") (binary_expression "iVar19 + 0x14" (identifier "iVar19") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" ({ "{") (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" (identifier "local_b4") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" (( "(") (binary_expression "dVar3 * (double)DAT_003057bc" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_003057bc" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_003057bc"))) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")")))))) (; ";")) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" (identifier "local_b4") (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" (else "else") (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))))) (; ";")) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" (identifier "local_b4") (= "=") (identifier "local_34")) (; ";")) (} "}")))) (} "}"))) (} "}"))) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" (if "if") (parenthesized_expression "(0 < (int)local_74)" (( "(") (binary_expression "0 < (int)local_74" (number_literal "0") (< "<") (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74"))) () ")")) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" ({ "{") (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" (identifier "uVar12") (= "=") (identifier "local_74")) (; ";")) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" (do "do") (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" ({ "{") (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" (identifier "uVar21") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" (if "if") (parenthesized_expression "(uVar12 <= uVar18)" (( "(") (binary_expression "uVar12 <= uVar18" (identifier "uVar12") (<= "<=") (identifier "uVar18")) () ")")) (compound_statement "{\n                uVar21 = uVar12;\n              }" ({ "{") (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" (identifier "uVar21") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" (identifier "cVar6") (= "=") (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" (identifier "uVar12") (= "=") (binary_expression "uVar12 - uVar21" (identifier "uVar12") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" (* "*") (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" (( "(") (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")) (+ "+") (binary_expression "uVar21 * 4" (identifier "uVar21") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" (identifier "cVar7") (= "=") (cast_expression "(char)uVar18" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" (identifier "uVar18") (= "=") (binary_expression "uVar18 - uVar21" (identifier "uVar18") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (identifier "uVar20") (= "=") (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (identifier "uVar20") (| "|") (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" (( "(") (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" (identifier "local_b4") (>> ">>") (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" (( "(") (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_74")) (- "-") (identifier "cVar6")) (& "&") (number_literal "0x1fU")) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "(0x20U - cVar7 & 0x1f)" (( "(") (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" (number_literal "0x20U") (- "-") (identifier "cVar7")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" ({ "{") (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" (identifier "bVar15") (= "=") (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 0x18)" (( "(") (binary_expression "uVar20 >> 0x18" (identifier "uVar20") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" (identifier "local_ac") (= "=") (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 0x10)" (( "(") (binary_expression "uVar20 >> 0x10" (identifier "uVar20") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" (identifier "local_a4") (= "=") (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 8)" (( "(") (binary_expression "uVar20 >> 8" (identifier "uVar20") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" ({ "{") (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (} "}")) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" (else "else") (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" ({ "{") (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (} "}")))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" (identifier "local_74") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0x20")) (; ";")) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" (identifier "uVar18") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" (identifier "param_6") (= "=") (binary_expression "param_6 + 4" (identifier "param_6") (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar12)" (( "(") (binary_expression "0 < (int)uVar12" (number_literal "0") (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (; ";")) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 0x20) * 8" (pointer_expression "*(int *)(iVar19 + 0x20)" (* "*") (cast_expression "(int *)(iVar19 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x20)" (( "(") (binary_expression "iVar19 + 0x20" (identifier "iVar19") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar3) {\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n            local_b4 = 0xffffffff;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }\n          }" ({ "{") (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" (identifier "local_b4") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" (( "(") (binary_expression "dVar3 * (double)DAT_003057bc" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_003057bc" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_003057bc"))) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }\n            }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_b4 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")")))))) (; ";")) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" (identifier "local_b4") (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" (else "else") (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_b4 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))))) (; ";")) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" (identifier "local_b4") (= "=") (identifier "local_34")) (; ";")) (} "}")))) (} "}"))) (} "}"))) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" (if "if") (parenthesized_expression "(0 < (int)local_74)" (( "(") (binary_expression "0 < (int)local_74" (number_literal "0") (< "<") (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74"))) () ")")) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);\n            iVar19 = *(int *)(param_1 + 0x2a8);\n          }" ({ "{") (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" (identifier "uVar12") (= "=") (identifier "local_74")) (; ";")) (do_statement "do {\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            } while (0 < (int)uVar12);" (do "do") (compound_statement "{\n              uVar21 = uVar18;\n              if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }\n              cVar6 = (char)uVar12;\n              uVar12 = uVar12 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }\n            }" ({ "{") (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" (identifier "uVar21") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (uVar12 <= uVar18) {\n                uVar21 = uVar12;\n              }" (if "if") (parenthesized_expression "(uVar12 <= uVar18)" (( "(") (binary_expression "uVar12 <= uVar18" (identifier "uVar12") (<= "<=") (identifier "uVar18")) () ")")) (compound_statement "{\n                uVar21 = uVar12;\n              }" ({ "{") (expression_statement "uVar21 = uVar12;" (assignment_expression "uVar21 = uVar12" (identifier "uVar21") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "cVar6 = (char)uVar12;" (assignment_expression "cVar6 = (char)uVar12" (identifier "cVar6") (= "=") (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar12 = uVar12 - uVar21;" (assignment_expression "uVar12 = uVar12 - uVar21" (identifier "uVar12") (= "=") (binary_expression "uVar12 - uVar21" (identifier "uVar12") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" (* "*") (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" (( "(") (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")) (+ "+") (binary_expression "uVar21 * 4" (identifier "uVar21") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" (identifier "cVar7") (= "=") (cast_expression "(char)uVar18" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" (identifier "uVar18") (= "=") (binary_expression "uVar18 - uVar21" (identifier "uVar18") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (identifier "uVar20") (= "=") (binary_expression "uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (identifier "uVar20") (| "|") (binary_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10)" (( "(") (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)local_74 - cVar6 & 0x1fU)" (identifier "local_b4") (>> ">>") (parenthesized_expression "((char)local_74 - cVar6 & 0x1fU)" (( "(") (binary_expression "(char)local_74 - cVar6 & 0x1fU" (binary_expression "(char)local_74 - cVar6" (cast_expression "(char)local_74" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_74")) (- "-") (identifier "cVar6")) (& "&") (number_literal "0x1fU")) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "(0x20U - cVar7 & 0x1f)" (( "(") (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" (number_literal "0x20U") (- "-") (identifier "cVar7")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                local_74 = *param_2;\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                param_2[0x14] = 0x20;\n                uVar18 = 0x20;\n                param_6 = param_6 + 4;\n              }" ({ "{") (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" (identifier "bVar15") (= "=") (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 0x18)" (( "(") (binary_expression "uVar20 >> 0x18" (identifier "uVar20") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" (identifier "local_ac") (= "=") (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 0x10)" (( "(") (binary_expression "uVar20 >> 0x10" (identifier "uVar20") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" (identifier "local_a4") (= "=") (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 8)" (( "(") (binary_expression "uVar20 >> 8" (identifier "uVar20") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" ({ "{") (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (} "}")) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" (else "else") (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" ({ "{") (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (} "}")))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" (identifier "local_74") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0x20")) (; ";")) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" (identifier "uVar18") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" (identifier "param_6") (= "=") (binary_expression "param_6 + 4" (identifier "param_6") (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar12)" (( "(") (binary_expression "0 < (int)uVar12" (number_literal "0") (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (; ";")) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_b4 = 0x3ff;" (assignment_expression "local_b4 = 0x3ff" (identifier "local_b4") (= "=") (number_literal "0x3ff")) (; ";")) (if_statement "if (*(int *)(iVar19 + 0x34) != 0) {\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar19 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(iVar19 + 0x34) != 0" (pointer_expression "*(int *)(iVar19 + 0x34)" (* "*") (cast_expression "(int *)(iVar19 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x34)" (( "(") (binary_expression "iVar19 + 0x34" (identifier "iVar19") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            local_b4 = 0;\n            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n            if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }\n          }" ({ "{") (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 0x38) * 8" (pointer_expression "*(int *)(iVar19 + 0x38)" (* "*") (cast_expression "(int *)(iVar19 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x38)" (( "(") (binary_expression "iVar19 + 0x38" (identifier "iVar19") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar3) {\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n              if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }\n            }" ({ "{") (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" (( "(") (binary_expression "dVar3 * (double)DAT_003057bc" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_003057bc" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_003057bc"))) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }\n              else {\n                local_b4 = 0xffffffff;\n              }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n                dVar3 = dVar3 + (double)DAT_002df2b8;\n                if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }\n              }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }\n                else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                  local_b4 = local_34;\n                }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")")))))) (; ";")) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" (identifier "local_b4") (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" (else "else") (compound_statement "{\n                  local_34 = (uint)(longlong)ROUND(dVar3);\n                  local_b4 = local_34;\n                }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))))) (; ";")) (expression_statement "local_b4 = local_34;" (assignment_expression "local_b4 = local_34" (identifier "local_b4") (= "=") (identifier "local_34")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                local_b4 = 0xffffffff;\n              }" (else "else") (compound_statement "{\n                local_b4 = 0xffffffff;\n              }" ({ "{") (expression_statement "local_b4 = 0xffffffff;" (assignment_expression "local_b4 = 0xffffffff" (identifier "local_b4") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")))) (} "}"))) (} "}"))) (if_statement "if (0 < (int)local_74) {\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }" (if "if") (parenthesized_expression "(0 < (int)local_74)" (( "(") (binary_expression "0 < (int)local_74" (number_literal "0") (< "<") (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74"))) () ")")) (compound_statement "{\n            uVar20 = param_2[0x13];\n            uVar12 = local_74;\n            while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }\n          }" ({ "{") (expression_statement "uVar20 = param_2[0x13];" (assignment_expression "uVar20 = param_2[0x13]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "uVar12 = local_74;" (assignment_expression "uVar12 = local_74" (identifier "uVar12") (= "=") (identifier "local_74")) (; ";")) (while_statement "while( true ) {\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              uVar21 = uVar18;\n              if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }\n              cVar6 = (char)local_74;\n              local_74 = local_74 - uVar21;\n              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);\n              cVar7 = (char)uVar18;\n              uVar18 = uVar18 - uVar21;\n              param_2[0x14] = uVar18;\n              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);\n              param_2[0x13] = uVar20;\n              if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }\n              if ((int)local_74 < 1) break;\n              uVar12 = *param_2;\n            }" ({ "{") (expression_statement "uVar21 = uVar18;" (assignment_expression "uVar21 = uVar18" (identifier "uVar21") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (local_74 <= uVar18) {\n                uVar21 = local_74;\n              }" (if "if") (parenthesized_expression "(local_74 <= uVar18)" (( "(") (binary_expression "local_74 <= uVar18" (identifier "local_74") (<= "<=") (identifier "uVar18")) () ")")) (compound_statement "{\n                uVar21 = local_74;\n              }" ({ "{") (expression_statement "uVar21 = local_74;" (assignment_expression "uVar21 = local_74" (identifier "uVar21") (= "=") (identifier "local_74")) (; ";")) (} "}"))) (expression_statement "cVar6 = (char)local_74;" (assignment_expression "cVar6 = (char)local_74" (identifier "cVar6") (= "=") (cast_expression "(char)local_74" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_74"))) (; ";")) (expression_statement "local_74 = local_74 - uVar21;" (assignment_expression "local_74 = local_74 - uVar21" (identifier "local_74") (= "=") (binary_expression "local_74 - uVar21" (identifier "local_74") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);" (assignment_expression "uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(param_2[0x15] + uVar21 * 4)" (* "*") (cast_expression "(uint *)(param_2[0x15] + uVar21 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x15] + uVar21 * 4)" (( "(") (binary_expression "param_2[0x15] + uVar21 * 4" (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")) (+ "+") (binary_expression "uVar21 * 4" (identifier "uVar21") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "cVar7 = (char)uVar18;" (assignment_expression "cVar7 = (char)uVar18" (identifier "cVar7") (= "=") (cast_expression "(char)uVar18" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar18 = uVar18 - uVar21;" (assignment_expression "uVar18 = uVar18 - uVar21" (identifier "uVar18") (= "=") (binary_expression "uVar18 - uVar21" (identifier "uVar18") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "param_2[0x14] = uVar18;" (assignment_expression "param_2[0x14] = uVar18" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f);" (assignment_expression "uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (identifier "uVar20") (= "=") (binary_expression "uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (identifier "uVar20") (| "|") (binary_expression "(local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<\n                                (0x20U - cVar7 & 0x1f)" (parenthesized_expression "(local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10)" (( "(") (binary_expression "local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10" (binary_expression "local_b4 >> ((char)uVar12 - cVar6 & 0x1fU)" (identifier "local_b4") (>> ">>") (parenthesized_expression "((char)uVar12 - cVar6 & 0x1fU)" (( "(") (binary_expression "(char)uVar12 - cVar6 & 0x1fU" (binary_expression "(char)uVar12 - cVar6" (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12")) (- "-") (identifier "cVar6")) (& "&") (number_literal "0x1fU")) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "(0x20U - cVar7 & 0x1f)" (( "(") (binary_expression "0x20U - cVar7 & 0x1f" (binary_expression "0x20U - cVar7" (number_literal "0x20U") (- "-") (identifier "cVar7")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "param_2[0x13] = uVar20;" (assignment_expression "param_2[0x13] = uVar20" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 == 0) {\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                bVar15 = (byte)(uVar20 >> 0x18);\n                local_ac = (byte)(uVar20 >> 0x10);\n                local_a4 = (byte)(uVar20 >> 8);\n                if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }\n                param_2[0x13] = 0;\n                uVar20 = 0;\n                uVar18 = 0x20;\n                param_2[0x14] = 0x20;\n                param_6 = param_6 + 4;\n              }" ({ "{") (expression_statement "bVar15 = (byte)(uVar20 >> 0x18);" (assignment_expression "bVar15 = (byte)(uVar20 >> 0x18)" (identifier "bVar15") (= "=") (call_expression "(byte)(uVar20 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 0x18)" (( "(") (binary_expression "uVar20 >> 0x18" (identifier "uVar20") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_ac = (byte)(uVar20 >> 0x10);" (assignment_expression "local_ac = (byte)(uVar20 >> 0x10)" (identifier "local_ac") (= "=") (call_expression "(byte)(uVar20 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 0x10)" (( "(") (binary_expression "uVar20 >> 0x10" (identifier "uVar20") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_a4 = (byte)(uVar20 >> 8);" (assignment_expression "local_a4 = (byte)(uVar20 >> 8)" (identifier "local_a4") (= "=") (call_expression "(byte)(uVar20 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 >> 8)" (( "(") (binary_expression "uVar20 >> 8" (identifier "uVar20") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }\n                else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                  *param_6 = (byte)uVar20;\n                  param_6[3] = bVar15;\n                  param_6[1] = local_a4;\n                  param_6[2] = local_ac;\n                }" ({ "{") (expression_statement "*param_6 = (byte)uVar20;" (assignment_expression "*param_6 = (byte)uVar20" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "param_6[3] = bVar15;" (assignment_expression "param_6[3] = bVar15" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_a4;" (assignment_expression "param_6[1] = local_a4" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[2] = local_ac;" (assignment_expression "param_6[2] = local_ac" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (} "}")) (else_clause "else {\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" (else "else") (compound_statement "{\n                  *param_6 = bVar15;\n                  param_6[1] = local_ac;\n                  param_6[2] = local_a4;\n                  param_6[3] = (byte)uVar20;\n                }" ({ "{") (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6[2] = local_a4;" (assignment_expression "param_6[2] = local_a4" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[3] = (byte)uVar20;" (assignment_expression "param_6[3] = (byte)uVar20" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (} "}")))) (expression_statement "param_2[0x13] = 0;" (assignment_expression "param_2[0x13] = 0" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar18 = 0x20;" (assignment_expression "uVar18 = 0x20" (identifier "uVar18") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "param_2[0x14] = 0x20;" (assignment_expression "param_2[0x14] = 0x20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0x20")) (; ";")) (expression_statement "param_6 = param_6 + 4;" (assignment_expression "param_6 = param_6 + 4" (identifier "param_6") (= "=") (binary_expression "param_6 + 4" (identifier "param_6") (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (if_statement "if ((int)local_74 < 1) break;" (if "if") (parenthesized_expression "((int)local_74 < 1)" (( "(") (binary_expression "(int)local_74 < 1" (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74")) (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar12 = *param_2;" (assignment_expression "uVar12 = *param_2" (identifier "uVar12") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" (identifier "local_9c") (= "=") (binary_expression "local_9c + 1" (identifier "local_9c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")))) (; ";")) (if_statement "if (local_9c == param_3) break;" (if "if") (parenthesized_expression "(local_9c == param_3)" (( "(") (binary_expression "local_9c == param_3" (identifier "local_9c") (== "==") (identifier "param_3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_74 = *param_2;" (assignment_expression "local_74 = *param_2" (identifier "local_74") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_3 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar18 = 10;" (assignment_expression "uVar18 = 10" (identifier "uVar18") (= "=") (number_literal "10")) (; ";")) (do_statement "do {\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      } while( true );" (do "do") (compound_statement "{\n        iVar14 = *(int *)(param_1 + 0x2a8);\n        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);\n        if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }\n        uVar20 = param_2[0x14];\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }\n        if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }\n        if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }\n        if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }\n        if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }\n        iVar19 = iVar19 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9];\n        if (iVar19 == param_3) {\n          return;\n        }\n        uVar18 = *param_2;\n      }" ({ "{") (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar14 + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar14 + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar14 + 8) * 8" (pointer_expression "*(int *)(iVar14 + 8)" (* "*") (cast_expression "(int *)(iVar14 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 8)" (( "(") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n          local_4c = 0;\n        }\n        else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n          local_4c = 0;\n        }" ({ "{") (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n          if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }\n        }" ({ "{") (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" (( "(") (binary_expression "dVar3 * (double)DAT_003057bc" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_003057bc" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_003057bc"))) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n            local_4c = 0xffffffff;\n          }\n          else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" (if "if") (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n            local_4c = 0xffffffff;\n          }" ({ "{") (expression_statement "local_4c = 0xffffffff;" (assignment_expression "local_4c = 0xffffffff" (identifier "local_4c") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" (else "else") (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }\n          }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }\n            else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_4c = local_34;\n            }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")")))))) (; ";")) (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" (identifier "local_4c") (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" (else "else") (compound_statement "{\n              local_34 = (uint)(longlong)ROUND(dVar3);\n              local_4c = local_34;\n            }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))))) (; ";")) (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" (identifier "local_4c") (= "=") (identifier "local_34")) (; ";")) (} "}")))) (} "}")))) (} "}")))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (if_statement "if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" ({ "{") (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (} "}"))) (if_statement "if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" (if "if") (parenthesized_expression "((int)uVar18 < 1)" (( "(") (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (!NAN(dVar3)) goto LAB_00165390;\n          local_54 = 0;\n        }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar14 + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar14 + 0x14) * 8" (pointer_expression "*(int *)(iVar14 + 0x14)" (* "*") (cast_expression "(int *)(iVar14 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x14)" (( "(") (binary_expression "iVar14 + 0x14" (identifier "iVar14") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (!NAN(dVar3)) goto LAB_00165390;" (if "if") (parenthesized_expression "(!NAN(dVar3))" (( "(") (unary_expression "!NAN(dVar3)" (! "!") (call_expression "NAN(dVar3)" (identifier "NAN") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))) () ")")) (goto_statement "goto LAB_00165390;" (goto "goto") (statement_identifier "LAB_00165390") (; ";"))) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" (else "else") (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" ({ "{") (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" (do "do") (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }\n            uVar20 = param_2[0x14];\n          }" ({ "{") (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165364;\n            }" ({ "{") (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" (identifier "uVar12") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" (if "if") (parenthesized_expression "(uVar18 <= uVar20)" (( "(") (binary_expression "uVar18 <= uVar20" (identifier "uVar18") (<= "<=") (identifier "uVar20")) () ")")) (compound_statement "{\n                uVar12 = uVar18;\n              }" ({ "{") (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" (identifier "uVar21") (= "=") (binary_expression "uVar18 - uVar12" (identifier "uVar18") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" (if "if") (parenthesized_expression "(-1 < (int)uVar21)" (( "(") (binary_expression "-1 < (int)uVar21" (number_literal "-1") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n                uVar18 = uVar21;\n              }" ({ "{") (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" (identifier "uVar18") (= "=") (identifier "uVar21")) (; ";")) (} "}"))) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" (if "if") (parenthesized_expression "(uVar20 == 8)" (( "(") (binary_expression "uVar20 == 8" (identifier "uVar20") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n                *param_6 = 0;\n              }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" (identifier "uVar20") (= "=") (binary_expression "uVar20 - uVar12" (identifier "uVar20") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15" (identifier "uVar10") (= "=") (binary_expression "local_4c >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_4c >> bVar15" (identifier "local_4c") (>> ">>") (identifier "bVar15")) (| "|") (binary_expression "0 << 0x20 - bVar15" (number_literal "0") (<< "<<") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" (if "if") (parenthesized_expression "((uVar18 & 0x20) != 0)" (( "(") (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" (( "(") (binary_expression "uVar18 & 0x20" (identifier "uVar18") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" ({ "{") (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "0 >> ((byte)uVar18 & 0x1f)" (number_literal "0") (>> ">>") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (identifier "bVar15") (= "=") (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (( "(") (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" (( "(") (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar12 & 0x1f)" (number_literal "-1") (<< "<<") (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")) () ")"))) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                bVar15 = 0;\n              }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (| "|") (identifier "bVar15"))) (; ";")) (if_statement "if (uVar20 != 0) break;" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (if_statement "if ((int)uVar21 < 1) goto LAB_00165364;" (if "if") (parenthesized_expression "((int)uVar21 < 1)" (( "(") (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00165364;" (goto "goto") (statement_identifier "LAB_00165364") (; ";"))) (} "}"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar21)" (( "(") (binary_expression "0 < (int)uVar21" (number_literal "0") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (; ";")) (labeled_statement "LAB_00165364:\n          iVar14 = *(int *)(param_1 + 0x2a8);" (statement_identifier "LAB_00165364") (: ":") (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar14 + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar14 + 0x14) * 8" (pointer_expression "*(int *)(iVar14 + 0x14)" (* "*") (cast_expression "(int *)(iVar14 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x14)" (( "(") (binary_expression "iVar14 + 0x14" (identifier "iVar14") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (NAN(dVar3)) {\nLAB_00165e72:\n            local_54 = 0;\n          }\n          else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(NAN(dVar3))" (( "(") (call_expression "NAN(dVar3)" (identifier "NAN") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")"))) () ")")) (compound_statement "{\nLAB_00165e72:\n            local_54 = 0;\n          }" ({ "{") (labeled_statement "LAB_00165e72:\n            local_54 = 0;" (statement_identifier "LAB_00165e72") (: ":") (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" (else "else") (compound_statement "{\nLAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }\n          }" ({ "{") (labeled_statement "LAB_00165390:\n            if (dVar3 <= 0.0) goto LAB_00165e72;" (statement_identifier "LAB_00165390") (: ":") (if_statement "if (dVar3 <= 0.0) goto LAB_00165e72;" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (goto_statement "goto LAB_00165e72;" (goto "goto") (statement_identifier "LAB_00165e72") (; ";")))) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" (( "(") (binary_expression "dVar3 * (double)DAT_003057bc" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_003057bc" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_003057bc"))) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n              local_54 = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" (if "if") (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n              local_54 = 0xffffffff;\n            }" ({ "{") (expression_statement "local_54 = 0xffffffff;" (assignment_expression "local_54 = 0xffffffff" (identifier "local_54") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" (else "else") (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }\n            }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_54 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")")))))) (; ";")) (expression_statement "local_54 = local_34;" (assignment_expression "local_54 = local_34" (identifier "local_54") (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" (else "else") (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_54 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))))) (; ";")) (expression_statement "local_54 = local_34;" (assignment_expression "local_54 = local_34" (identifier "local_54") (= "=") (identifier "local_34")) (; ";")) (} "}")))) (} "}")))) (} "}")))) (if_statement "if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" ({ "{") (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (} "}"))) (} "}")))) (if_statement "if ((int)uVar18 < 1) {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }\n        else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" (if "if") (parenthesized_expression "((int)uVar18 < 1)" (( "(") (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (!NAN(dVar3)) goto LAB_00165520;\n          local_5c = 0;\n        }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar14 + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar14 + 0x20) * 8" (pointer_expression "*(int *)(iVar14 + 0x20)" (* "*") (cast_expression "(int *)(iVar14 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x20)" (( "(") (binary_expression "iVar14 + 0x20" (identifier "iVar14") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (!NAN(dVar3)) goto LAB_00165520;" (if "if") (parenthesized_expression "(!NAN(dVar3))" (( "(") (unary_expression "!NAN(dVar3)" (! "!") (call_expression "NAN(dVar3)" (identifier "NAN") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))) () ")")) (goto_statement "goto LAB_00165520;" (goto "goto") (statement_identifier "LAB_00165520") (; ";"))) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" (else "else") (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);\n          if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }\n          if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }\n        }" ({ "{") (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" (do "do") (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }\n            uVar20 = param_2[0x14];\n          }" ({ "{") (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_001654f4;\n            }" ({ "{") (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" (identifier "uVar12") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" (if "if") (parenthesized_expression "(uVar18 <= uVar20)" (( "(") (binary_expression "uVar18 <= uVar20" (identifier "uVar18") (<= "<=") (identifier "uVar20")) () ")")) (compound_statement "{\n                uVar12 = uVar18;\n              }" ({ "{") (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" (identifier "uVar21") (= "=") (binary_expression "uVar18 - uVar12" (identifier "uVar18") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" (if "if") (parenthesized_expression "(-1 < (int)uVar21)" (( "(") (binary_expression "-1 < (int)uVar21" (number_literal "-1") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n                uVar18 = uVar21;\n              }" ({ "{") (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" (identifier "uVar18") (= "=") (identifier "uVar21")) (; ";")) (} "}"))) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" (if "if") (parenthesized_expression "(uVar20 == 8)" (( "(") (binary_expression "uVar20 == 8" (identifier "uVar20") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n                *param_6 = 0;\n              }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" (identifier "uVar20") (= "=") (binary_expression "uVar20 - uVar12" (identifier "uVar20") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15" (identifier "uVar10") (= "=") (binary_expression "local_54 >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_54 >> bVar15" (identifier "local_54") (>> ">>") (identifier "bVar15")) (| "|") (binary_expression "0 << 0x20 - bVar15" (number_literal "0") (<< "<<") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" (if "if") (parenthesized_expression "((uVar18 & 0x20) != 0)" (( "(") (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" (( "(") (binary_expression "uVar18 & 0x20" (identifier "uVar18") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" ({ "{") (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "0 >> ((byte)uVar18 & 0x1f)" (number_literal "0") (>> ">>") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (identifier "bVar15") (= "=") (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (( "(") (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" (( "(") (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar12 & 0x1f)" (number_literal "-1") (<< "<<") (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")) () ")"))) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                bVar15 = 0;\n              }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (| "|") (identifier "bVar15"))) (; ";")) (if_statement "if (uVar20 != 0) break;" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (if_statement "if ((int)uVar21 < 1) goto LAB_001654f4;" (if "if") (parenthesized_expression "((int)uVar21 < 1)" (( "(") (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_001654f4;" (goto "goto") (statement_identifier "LAB_001654f4") (; ";"))) (} "}"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar21)" (( "(") (binary_expression "0 < (int)uVar21" (number_literal "0") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (; ";")) (labeled_statement "LAB_001654f4:\n          iVar14 = *(int *)(param_1 + 0x2a8);" (statement_identifier "LAB_001654f4") (: ":") (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar14 + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar14 + 0x20) * 8" (pointer_expression "*(int *)(iVar14 + 0x20)" (* "*") (cast_expression "(int *)(iVar14 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x20)" (( "(") (binary_expression "iVar14 + 0x20" (identifier "iVar14") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (NAN(dVar3)) {\nLAB_00165e52:\n            local_5c = 0;\n          }\n          else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(NAN(dVar3))" (( "(") (call_expression "NAN(dVar3)" (identifier "NAN") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")"))) () ")")) (compound_statement "{\nLAB_00165e52:\n            local_5c = 0;\n          }" ({ "{") (labeled_statement "LAB_00165e52:\n            local_5c = 0;" (statement_identifier "LAB_00165e52") (: ":") (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" (else "else") (compound_statement "{\nLAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }\n          }" ({ "{") (labeled_statement "LAB_00165520:\n            if (dVar3 <= 0.0) goto LAB_00165e52;" (statement_identifier "LAB_00165520") (: ":") (if_statement "if (dVar3 <= 0.0) goto LAB_00165e52;" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (goto_statement "goto LAB_00165e52;" (goto "goto") (statement_identifier "LAB_00165e52") (; ";")))) (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" (( "(") (binary_expression "dVar3 * (double)DAT_003057bc" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_003057bc" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_003057bc"))) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if ((double)DAT_002df8b0 <= dVar3) {\n              local_5c = 0xffffffff;\n            }\n            else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" (if "if") (parenthesized_expression "((double)DAT_002df8b0 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df8b0 <= dVar3" (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n              local_5c = 0xffffffff;\n            }" ({ "{") (expression_statement "local_5c = 0xffffffff;" (assignment_expression "local_5c = 0xffffffff" (identifier "local_5c") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" (else "else") (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }\n            }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_5c = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")")))))) (; ";")) (expression_statement "local_5c = local_34;" (assignment_expression "local_5c = local_34" (identifier "local_5c") (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" (else "else") (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_5c = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))))) (; ";")) (expression_statement "local_5c = local_34;" (assignment_expression "local_5c = local_34" (identifier "local_5c") (= "=") (identifier "local_34")) (; ";")) (} "}")))) (} "}")))) (} "}")))) (if_statement "if (uVar20 == 0) {\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            param_2[0x14] = 8;\n            uVar20 = 8;\n          }" ({ "{") (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (} "}"))) (} "}")))) (if_statement "if (0 < (int)uVar18) {\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }" (if "if") (parenthesized_expression "(0 < (int)uVar18)" (( "(") (binary_expression "0 < (int)uVar18" (number_literal "0") (< "<") (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18"))) () ")")) (compound_statement "{\n          do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);\nLAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);\n          uVar18 = *param_2;\n        }" ({ "{") (do_statement "do {\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          } while (0 < (int)uVar21);" (do "do") (compound_statement "{\n            while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }\n            uVar20 = param_2[0x14];\n          }" ({ "{") (while_statement "while( true ) {\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              uVar12 = uVar20;\n              if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }\n              uVar21 = uVar18 - uVar12;\n              uVar18 = 0;\n              if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }\n              if (uVar20 == 8) {\n                *param_6 = 0;\n              }\n              uVar20 = uVar20 - uVar12;\n              bVar15 = (byte)uVar18 & 0x1f;\n              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;\n              if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }\n              param_2[0x14] = uVar20;\n              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n              if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }\n              *param_6 = *param_6 | bVar15;\n              if (uVar20 != 0) break;\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n              uVar20 = 8;\n              if ((int)uVar21 < 1) goto LAB_00165684;\n            }" ({ "{") (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" (identifier "uVar12") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 <= uVar20) {\n                uVar12 = uVar18;\n              }" (if "if") (parenthesized_expression "(uVar18 <= uVar20)" (( "(") (binary_expression "uVar18 <= uVar20" (identifier "uVar18") (<= "<=") (identifier "uVar20")) () ")")) (compound_statement "{\n                uVar12 = uVar18;\n              }" ({ "{") (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" (identifier "uVar21") (= "=") (binary_expression "uVar18 - uVar12" (identifier "uVar18") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (int)uVar21) {\n                uVar18 = uVar21;\n              }" (if "if") (parenthesized_expression "(-1 < (int)uVar21)" (( "(") (binary_expression "-1 < (int)uVar21" (number_literal "-1") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n                uVar18 = uVar21;\n              }" ({ "{") (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" (identifier "uVar18") (= "=") (identifier "uVar21")) (; ";")) (} "}"))) (if_statement "if (uVar20 == 8) {\n                *param_6 = 0;\n              }" (if "if") (parenthesized_expression "(uVar20 == 8)" (( "(") (binary_expression "uVar20 == 8" (identifier "uVar20") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n                *param_6 = 0;\n              }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" (identifier "uVar20") (= "=") (binary_expression "uVar20 - uVar12" (identifier "uVar20") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15" (identifier "uVar10") (= "=") (binary_expression "local_5c >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_5c >> bVar15" (identifier "local_5c") (>> ">>") (identifier "bVar15")) (| "|") (binary_expression "0 << 0x20 - bVar15" (number_literal "0") (<< "<<") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar18 & 0x20) != 0) {\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" (if "if") (parenthesized_expression "((uVar18 & 0x20) != 0)" (( "(") (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" (( "(") (binary_expression "uVar18 & 0x20" (identifier "uVar18") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n              }" ({ "{") (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "0 >> ((byte)uVar18 & 0x1f)" (number_literal "0") (>> ">>") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (identifier "bVar15") (= "=") (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (( "(") (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" (( "(") (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar12 & 0x1f)" (number_literal "-1") (<< "<<") (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")) () ")"))) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n                bVar15 = 0;\n              }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                bVar15 = 0;\n              }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (| "|") (identifier "bVar15"))) (; ";")) (if_statement "if (uVar20 != 0) break;" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (if_statement "if ((int)uVar21 < 1) goto LAB_00165684;" (if "if") (parenthesized_expression "((int)uVar21 < 1)" (( "(") (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00165684;" (goto "goto") (statement_identifier "LAB_00165684") (; ";"))) (} "}"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar21)" (( "(") (binary_expression "0 < (int)uVar21" (number_literal "0") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (; ";")) (labeled_statement "LAB_00165684:\n          iVar14 = *(int *)(param_1 + 0x2a8);" (statement_identifier "LAB_00165684") (: ":") (expression_statement "iVar14 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar14 = *(int *)(param_1 + 0x2a8)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar14 + 0x34) == 0) {\n          local_44 = 0x3ff;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar14 + 0x34) == 0)" (( "(") (binary_expression "*(int *)(iVar14 + 0x34) == 0" (pointer_expression "*(int *)(iVar14 + 0x34)" (* "*") (cast_expression "(int *)(iVar14 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x34)" (( "(") (binary_expression "iVar14 + 0x34" (identifier "iVar14") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_44 = 0x3ff;\n        }" ({ "{") (expression_statement "local_44 = 0x3ff;" (assignment_expression "local_44 = 0x3ff" (identifier "local_44") (= "=") (number_literal "0x3ff")) (; ";")) (} "}")) (else_clause "else {\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }\n        }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar14 + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar14 + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar14 + 0x38) * 8" (pointer_expression "*(int *)(iVar14 + 0x38)" (* "*") (cast_expression "(int *)(iVar14 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x38)" (( "(") (binary_expression "iVar14 + 0x38" (identifier "iVar14") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n            local_44 = 0;\n          }\n          else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n            local_44 = 0;\n          }" ({ "{") (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" (else "else") (compound_statement "{\n            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;\n            if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }\n          }" ({ "{") (expression_statement "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "(dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8" (parenthesized_expression "(dVar3 * (double)DAT_003057bc)" (( "(") (binary_expression "dVar3 * (double)DAT_003057bc" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_003057bc" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_003057bc"))) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }\n            else {\n              local_44 = 0xffffffff;\n            }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n              dVar3 = dVar3 + (double)DAT_002df2b8;\n              if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }\n            }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }\n              else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n                local_44 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")")))))) (; ";")) (expression_statement "local_44 = local_34;" (assignment_expression "local_44 = local_34" (identifier "local_44") (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" (else "else") (compound_statement "{\n                local_34 = (uint)(longlong)ROUND(dVar3);\n                local_44 = local_34;\n              }" ({ "{") (expression_statement "local_34 = (uint)(longlong)ROUND(dVar3);" (assignment_expression "local_34 = (uint)(longlong)ROUND(dVar3)" (identifier "local_34") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))))) (; ";")) (expression_statement "local_44 = local_34;" (assignment_expression "local_44 = local_34" (identifier "local_44") (= "=") (identifier "local_34")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n              local_44 = 0xffffffff;\n            }" (else "else") (compound_statement "{\n              local_44 = 0xffffffff;\n            }" ({ "{") (expression_statement "local_44 = 0xffffffff;" (assignment_expression "local_44 = 0xffffffff" (identifier "local_44") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")))) (} "}")))) (} "}")))) (if_statement "if (uVar20 == 0) {\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          param_2[0x14] = 8;\n          uVar20 = 8;\n        }" ({ "{") (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (} "}"))) (if_statement "if (0 < (int)uVar18) {\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }" (if "if") (parenthesized_expression "(0 < (int)uVar18)" (( "(") (binary_expression "0 < (int)uVar18" (number_literal "0") (< "<") (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18"))) () ")")) (compound_statement "{\n          while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }\n        }" ({ "{") (while_statement "while( true ) {\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            uVar12 = uVar20;\n            if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }\n            uVar21 = uVar18 - uVar12;\n            uVar18 = 0;\n            if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }\n            if (uVar20 == 8) {\n              *param_6 = 0;\n            }\n            uVar20 = uVar20 - uVar12;\n            param_2[0x14] = uVar20;\n            bVar15 = (byte)uVar18 & 0x1f;\n            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;\n            if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }\n            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n            if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }\n            *param_6 = *param_6 | bVar15;\n            if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }\n            if ((int)uVar21 < 1) break;\n            uVar20 = param_2[0x14];\n          }" ({ "{") (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" (identifier "uVar12") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 <= uVar20) {\n              uVar12 = uVar18;\n            }" (if "if") (parenthesized_expression "(uVar18 <= uVar20)" (( "(") (binary_expression "uVar18 <= uVar20" (identifier "uVar18") (<= "<=") (identifier "uVar20")) () ")")) (compound_statement "{\n              uVar12 = uVar18;\n            }" ({ "{") (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" (identifier "uVar21") (= "=") (binary_expression "uVar18 - uVar12" (identifier "uVar18") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (int)uVar21) {\n              uVar18 = uVar21;\n            }" (if "if") (parenthesized_expression "(-1 < (int)uVar21)" (( "(") (binary_expression "-1 < (int)uVar21" (number_literal "-1") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n              uVar18 = uVar21;\n            }" ({ "{") (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" (identifier "uVar18") (= "=") (identifier "uVar21")) (; ";")) (} "}"))) (if_statement "if (uVar20 == 8) {\n              *param_6 = 0;\n            }" (if "if") (parenthesized_expression "(uVar20 == 8)" (( "(") (binary_expression "uVar20 == 8" (identifier "uVar20") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n              *param_6 = 0;\n            }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" (identifier "uVar20") (= "=") (binary_expression "uVar20 - uVar12" (identifier "uVar20") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;" (assignment_expression "uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15" (identifier "uVar10") (= "=") (binary_expression "local_44 >> bVar15 | 0 << 0x20 - bVar15" (binary_expression "local_44 >> bVar15" (identifier "local_44") (>> ">>") (identifier "bVar15")) (| "|") (binary_expression "0 << 0x20 - bVar15" (number_literal "0") (<< "<<") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar18 & 0x20) != 0) {\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }" (if "if") (parenthesized_expression "((uVar18 & 0x20) != 0)" (( "(") (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" (( "(") (binary_expression "uVar18 & 0x20" (identifier "uVar18") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              uVar10 = 0 >> ((byte)uVar18 & 0x1f);\n            }" ({ "{") (expression_statement "uVar10 = 0 >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = 0 >> ((byte)uVar18 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "0 >> ((byte)uVar18 & 0x1f)" (number_literal "0") (>> ">>") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (identifier "bVar15") (= "=") (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (( "(") (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" (( "(") (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar12 & 0x1f)" (number_literal "-1") (<< "<<") (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")) () ")"))) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n              bVar15 = 0;\n            }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              bVar15 = 0;\n            }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (| "|") (identifier "bVar15"))) (; ";")) (if_statement "if (uVar20 == 0) {\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              param_6 = param_6 + 1;\n              param_2[0x14] = 8;\n            }" ({ "{") (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (} "}"))) (if_statement "if ((int)uVar21 < 1) break;" (if "if") (parenthesized_expression "((int)uVar21 < 1)" (( "(") (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")))) (; ";")) (if_statement "if (iVar19 == param_3) {\n          return;\n        }" (if "if") (parenthesized_expression "(iVar19 == param_3)" (( "(") (binary_expression "iVar19 == param_3" (identifier "iVar19") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_001642d0:\n    local_7c = 0;" (statement_identifier "LAB_001642d0") (: ":") (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" (identifier "local_7c") (= "=") (number_literal "0")) (; ";"))) (expression_statement "iStack_78 = 0;" (assignment_expression "iStack_78 = 0" (identifier "iStack_78") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar18 == 0) goto LAB_00163bfb;" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00163bfb;" (goto "goto") (statement_identifier "LAB_00163bfb") (; ";"))) (} "}")) (else_clause "else {\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" (else "else") (compound_statement "{\n    if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }\n    if (uVar18 != 0x40) goto LAB_001642d0;\n    if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }\n  }" ({ "{") (if_statement "if (uVar18 == 0x20) {\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }" (if "if") (parenthesized_expression "(uVar18 == 0x20)" (( "(") (binary_expression "uVar18 == 0x20" (identifier "uVar18") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n      if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }\n      if (param_3 < 1) {\n        return;\n      }\n      local_b4 = 0;\n      do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );\n    }" ({ "{") (if_statement "if (param_2[2] == 1) {\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }" (if "if") (parenthesized_expression "(param_2[2] == 1)" (( "(") (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        if (param_3 < 1) {\n          return;\n        }\n        local_b4 = 0;\n        do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);\n        return;\n      }" ({ "{") (if_statement "if (param_3 < 1) {\n          return;\n        }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        } while (local_b4 != param_3);" (do "do") (compound_statement "{\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x10);\n          bVar13 = (byte)((uint)fVar4 >> 0x18);\n          if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }\n          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          bVar9 = (byte)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }\n          fVar4 = fVar1;\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }\n          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);\n          bVar15 = (byte)((uint)fVar4 >> 8);\n          fVar22 = (float)((uint)fVar4 >> 0x18);\n          bVar13 = (byte)((uint)fVar4 >> 0x10);\n          if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }\n          param_6[0xf] = SUB41(fVar22,0);\n          local_b4 = local_b4 + 1;\n          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n          param_6 = param_6 + param_2[9] + 0x10;\n        }" ({ "{") (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (identifier "fVar4") (= "=") (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (* "*") (cast_expression "(float)*(double *)(param_2 + 0x11)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x11)" (* "*") (cast_expression "(double *)(param_2 + 0x11)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x11)" (( "(") (binary_expression "param_2 + 0x11" (identifier "param_2") (+ "+") (number_literal "0x11")) () ")")))))) (+ "+") (cast_expression "(float)*(double *)(param_2 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")"))))))) (; ";")) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 8)" (( "(") (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x10)" (identifier "bVar9") (= "=") (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 0x10)" (( "(") (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x18)" (identifier "bVar13") (= "=") (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 0x18)" (( "(") (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }\n          else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            *param_6 = SUB41(fVar4,0);\n            param_6[1] = bVar15;\n            param_6[2] = bVar9;\n            param_6[3] = bVar13;\n          }" ({ "{") (expression_statement "*param_6 = SUB41(fVar4,0);" (assignment_expression "*param_6 = SUB41(fVar4,0)" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (call_expression "SUB41(fVar4,0)" (identifier "SUB41") (argument_list "(fVar4,0)" (( "(") (identifier "fVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[1] = bVar15;" (assignment_expression "param_6[1] = bVar15" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[2] = bVar9;" (assignment_expression "param_6[2] = bVar9" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (} "}")) (else_clause "else {\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" (else "else") (compound_statement "{\n            param_6[1] = bVar9;\n            *param_6 = bVar13;\n            param_6[2] = bVar15;\n            param_6[3] = SUB41(fVar4,0);\n          }" ({ "{") (expression_statement "param_6[1] = bVar9;" (assignment_expression "param_6[1] = bVar9" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "*param_6 = bVar13;" (assignment_expression "*param_6 = bVar13" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[3] = SUB41(fVar4,0);" (assignment_expression "param_6[3] = SUB41(fVar4,0)" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (call_expression "SUB41(fVar4,0)" (identifier "SUB41") (argument_list "(fVar4,0)" (( "(") (identifier "fVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (identifier "fVar4") (= "=") (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (* "*") (cast_expression "(float)*(double *)(param_2 + 0x11)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x11)" (* "*") (cast_expression "(double *)(param_2 + 0x11)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x11)" (( "(") (binary_expression "param_2 + 0x11" (identifier "param_2") (+ "+") (number_literal "0x11")) () ")")))))) (+ "+") (cast_expression "(float)*(double *)(param_2 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")"))))))) (; ";")) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 8)" (( "(") (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x10)" (identifier "bVar9") (= "=") (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 0x10)" (( "(") (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x18)" (identifier "bVar13") (= "=") (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 0x18)" (( "(") (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }\n          else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            param_6[4] = SUB41(fVar4,0);\n            param_6[6] = bVar9;\n            param_6[5] = bVar15;\n            param_6[7] = bVar13;\n          }" ({ "{") (expression_statement "param_6[4] = SUB41(fVar4,0);" (assignment_expression "param_6[4] = SUB41(fVar4,0)" (subscript_expression "param_6[4]" (identifier "param_6") ([ "[") (number_literal "4") (] "]")) (= "=") (call_expression "SUB41(fVar4,0)" (identifier "SUB41") (argument_list "(fVar4,0)" (( "(") (identifier "fVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[6] = bVar9;" (assignment_expression "param_6[6] = bVar9" (subscript_expression "param_6[6]" (identifier "param_6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[5] = bVar15;" (assignment_expression "param_6[5] = bVar15" (subscript_expression "param_6[5]" (identifier "param_6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[7] = bVar13;" (assignment_expression "param_6[7] = bVar13" (subscript_expression "param_6[7]" (identifier "param_6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (} "}")) (else_clause "else {\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" (else "else") (compound_statement "{\n            param_6[5] = bVar9;\n            param_6[4] = bVar13;\n            param_6[6] = bVar15;\n            param_6[7] = SUB41(fVar4,0);\n          }" ({ "{") (expression_statement "param_6[5] = bVar9;" (assignment_expression "param_6[5] = bVar9" (subscript_expression "param_6[5]" (identifier "param_6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[4] = bVar13;" (assignment_expression "param_6[4] = bVar13" (subscript_expression "param_6[4]" (identifier "param_6") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[6] = bVar15;" (assignment_expression "param_6[6] = bVar15" (subscript_expression "param_6[6]" (identifier "param_6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[7] = SUB41(fVar4,0);" (assignment_expression "param_6[7] = SUB41(fVar4,0)" (subscript_expression "param_6[7]" (identifier "param_6") ([ "[") (number_literal "7") (] "]")) (= "=") (call_expression "SUB41(fVar4,0)" (identifier "SUB41") (argument_list "(fVar4,0)" (( "(") (identifier "fVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (identifier "fVar4") (= "=") (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                  (float)*(double *)(param_2 + 0x11)" (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (* "*") (cast_expression "(float)*(double *)(param_2 + 0x11)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x11)" (* "*") (cast_expression "(double *)(param_2 + 0x11)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x11)" (( "(") (binary_expression "param_2 + 0x11" (identifier "param_2") (+ "+") (number_literal "0x11")) () ")")))))) (+ "+") (cast_expression "(float)*(double *)(param_2 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")"))))))) (; ";")) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 8)" (( "(") (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar9 = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "bVar9 = (byte)((uint)fVar4 >> 0x18)" (identifier "bVar9") (= "=") (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 0x18)" (( "(") (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x10)" (identifier "bVar13") (= "=") (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 0x10)" (( "(") (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }\n          else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            param_6[8] = SUB41(fVar4,0);\n            param_6[10] = bVar13;\n            param_6[9] = bVar15;\n            param_6[0xb] = bVar9;\n          }" ({ "{") (expression_statement "param_6[8] = SUB41(fVar4,0);" (assignment_expression "param_6[8] = SUB41(fVar4,0)" (subscript_expression "param_6[8]" (identifier "param_6") ([ "[") (number_literal "8") (] "]")) (= "=") (call_expression "SUB41(fVar4,0)" (identifier "SUB41") (argument_list "(fVar4,0)" (( "(") (identifier "fVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[10] = bVar13;" (assignment_expression "param_6[10] = bVar13" (subscript_expression "param_6[10]" (identifier "param_6") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[9] = bVar15;" (assignment_expression "param_6[9] = bVar15" (subscript_expression "param_6[9]" (identifier "param_6") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[0xb] = bVar9;" (assignment_expression "param_6[0xb] = bVar9" (subscript_expression "param_6[0xb]" (identifier "param_6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (} "}")) (else_clause "else {\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" (else "else") (compound_statement "{\n            param_6[10] = bVar15;\n            param_6[8] = bVar9;\n            param_6[9] = bVar13;\n            param_6[0xb] = SUB41(fVar4,0);\n          }" ({ "{") (expression_statement "param_6[10] = bVar15;" (assignment_expression "param_6[10] = bVar15" (subscript_expression "param_6[10]" (identifier "param_6") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[8] = bVar9;" (assignment_expression "param_6[8] = bVar9" (subscript_expression "param_6[8]" (identifier "param_6") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[9] = bVar13;" (assignment_expression "param_6[9] = bVar13" (subscript_expression "param_6[9]" (identifier "param_6") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[0xb] = SUB41(fVar4,0);" (assignment_expression "param_6[0xb] = SUB41(fVar4,0)" (subscript_expression "param_6[0xb]" (identifier "param_6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (call_expression "SUB41(fVar4,0)" (identifier "SUB41") (argument_list "(fVar4,0)" (( "(") (identifier "fVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "fVar4 = fVar1;" (assignment_expression "fVar4 = fVar1" (identifier "fVar4") (= "=") (identifier "fVar1")) (; ";")) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          }" ({ "{") (expression_statement "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (identifier "fVar4") (= "=") (cast_expression "(float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))))) (; ";")) (} "}"))) (expression_statement "fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);" (assignment_expression "fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (identifier "fVar4") (= "=") (binary_expression "fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3)" (binary_expression "fVar4 * (float)*(double *)(param_2 + 0x11)" (identifier "fVar4") (* "*") (cast_expression "(float)*(double *)(param_2 + 0x11)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x11)" (* "*") (cast_expression "(double *)(param_2 + 0x11)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x11)" (( "(") (binary_expression "param_2 + 0x11" (identifier "param_2") (+ "+") (number_literal "0x11")) () ")")))))) (+ "+") (cast_expression "(float)*(double *)(param_2 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")"))))))) (; ";")) (expression_statement "bVar15 = (byte)((uint)fVar4 >> 8);" (assignment_expression "bVar15 = (byte)((uint)fVar4 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)((uint)fVar4 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 8)" (( "(") (binary_expression "(uint)fVar4 >> 8" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "fVar22 = (float)((uint)fVar4 >> 0x18);" (assignment_expression "fVar22 = (float)((uint)fVar4 >> 0x18)" (identifier "fVar22") (= "=") (cast_expression "(float)((uint)fVar4 >> 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((uint)fVar4 >> 0x18)" (( "(") (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((uint)fVar4 >> 0x10);" (assignment_expression "bVar13 = (byte)((uint)fVar4 >> 0x10)" (identifier "bVar13") (= "=") (call_expression "(byte)((uint)fVar4 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 0x10)" (( "(") (binary_expression "(uint)fVar4 >> 0x10" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }\n          else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            param_6[0xc] = SUB41(fVar4,0);\n            param_6[0xe] = bVar13;\n            param_6[0xd] = bVar15;\n          }" ({ "{") (expression_statement "param_6[0xc] = SUB41(fVar4,0);" (assignment_expression "param_6[0xc] = SUB41(fVar4,0)" (subscript_expression "param_6[0xc]" (identifier "param_6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (call_expression "SUB41(fVar4,0)" (identifier "SUB41") (argument_list "(fVar4,0)" (( "(") (identifier "fVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[0xe] = bVar13;" (assignment_expression "param_6[0xe] = bVar13" (subscript_expression "param_6[0xe]" (identifier "param_6") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[0xd] = bVar15;" (assignment_expression "param_6[0xd] = bVar15" (subscript_expression "param_6[0xd]" (identifier "param_6") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (} "}")) (else_clause "else {\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" (else "else") (compound_statement "{\n            param_6[0xe] = bVar15;\n            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);\n            param_6[0xd] = bVar13;\n            fVar22 = fVar4;\n          }" ({ "{") (expression_statement "param_6[0xe] = bVar15;" (assignment_expression "param_6[0xe] = bVar15" (subscript_expression "param_6[0xe]" (identifier "param_6") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[0xc] = (byte)((uint)fVar4 >> 0x18);" (assignment_expression "param_6[0xc] = (byte)((uint)fVar4 >> 0x18)" (subscript_expression "param_6[0xc]" (identifier "param_6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (call_expression "(byte)((uint)fVar4 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar4 >> 0x18)" (( "(") (binary_expression "(uint)fVar4 >> 0x18" (cast_expression "(uint)fVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "param_6[0xd] = bVar13;" (assignment_expression "param_6[0xd] = bVar13" (subscript_expression "param_6[0xd]" (identifier "param_6") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "fVar22 = fVar4;" (assignment_expression "fVar22 = fVar4" (identifier "fVar22") (= "=") (identifier "fVar4")) (; ";")) (} "}")))) (expression_statement "param_6[0xf] = SUB41(fVar22,0);" (assignment_expression "param_6[0xf] = SUB41(fVar22,0)" (subscript_expression "param_6[0xf]" (identifier "param_6") ([ "[") (number_literal "0xf") (] "]")) (= "=") (call_expression "SUB41(fVar22,0)" (identifier "SUB41") (argument_list "(fVar22,0)" (( "(") (identifier "fVar22") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" (identifier "local_b4") (= "=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9] + 0x10;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x10" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9] + 0x10" (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (+ "+") (number_literal "0x10"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_b4 != param_3)" (( "(") (binary_expression "local_b4 != param_3" (identifier "local_b4") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_3 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      } while( true );" (do "do") (compound_statement "{\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }\n        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);\n        if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }\n        param_6[0xf] = bVar8;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x10;\n        if (local_b4 == param_3) {\n          return;\n        }\n      }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          bVar9 = 0;\n          bVar8 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164d14;\nLAB_00164af3:\n          param_6[1] = bVar9;\n          *param_6 = bVar8;\n          param_6[2] = bVar17;\n          param_6[3] = (byte)local_34;\n        }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" (identifier "bVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2[0x10] == 1) goto LAB_00164d14;" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164d14;" (goto "goto") (statement_identifier "LAB_00164d14") (; ";"))) (labeled_statement "LAB_00164af3:\n          param_6[1] = bVar9;" (statement_identifier "LAB_00164af3") (: ":") (expression_statement "param_6[1] = bVar9;" (assignment_expression "param_6[1] = bVar9" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar9")) (; ";"))) (expression_statement "*param_6 = bVar8;" (assignment_expression "*param_6 = bVar8" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_6[2] = bVar17;" (assignment_expression "param_6[2] = bVar17" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_6[3] = (byte)local_34;" (assignment_expression "param_6[3] = (byte)local_34" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (} "}")) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" (else "else") (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164af3;\nLAB_00164d14:\n          *param_6 = bVar15;\n          param_6[1] = bVar13;\n          param_6[2] = bVar9;\n          param_6[3] = bVar8;\n        }" ({ "{") (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" (identifier "dVar3") (= "=") (binary_expression "dVar3 * (double)DAT_002e8148" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_002e8148" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e8148")))) (; ";")) (if_statement "if (dVar5 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" (if "if") (parenthesized_expression "(dVar5 <= dVar3)" (( "(") (binary_expression "dVar5 <= dVar3" (identifier "dVar5") (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar17 = 0xff;\n            bVar9 = 0xff;\n            bVar8 = 0xff;\n          }" ({ "{") (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" (identifier "bVar17") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar9 = 0xff;" (assignment_expression "bVar9 = 0xff" (identifier "bVar9") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" (identifier "bVar8") (= "=") (number_literal "0xff")) (; ";")) (} "}")) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" (else "else") (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar17 = (byte)((ulonglong)lVar2 >> 8);\n          }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")"))))) (; ";")) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (cast_expression "(byte)lVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "lVar2"))) (; ";")) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x18)" (identifier "bVar8") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 0x18)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar9 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar9 = (byte)((ulonglong)lVar2 >> 0x10)" (identifier "bVar9") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 0x10)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 8)" (( "(") (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" (identifier "bVar15") (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (expression_statement "bVar13 = bVar17;" (assignment_expression "bVar13 = bVar17" (identifier "bVar13") (= "=") (identifier "bVar17")) (; ";")) (if_statement "if (param_2[0x10] != 1) goto LAB_00164af3;" (if "if") (parenthesized_expression "(param_2[0x10] != 1)" (( "(") (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164af3;" (goto "goto") (statement_identifier "LAB_00164af3") (; ";"))) (labeled_statement "LAB_00164d14:\n          *param_6 = bVar15;" (statement_identifier "LAB_00164d14") (: ":") (expression_statement "*param_6 = bVar15;" (assignment_expression "*param_6 = bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "bVar15")) (; ";"))) (expression_statement "param_6[1] = bVar13;" (assignment_expression "param_6[1] = bVar13" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[2] = bVar9;" (assignment_expression "param_6[2] = bVar9" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[3] = bVar8;" (assignment_expression "param_6[3] = bVar8" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (} "}")))) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar9 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar13 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164ce4;\nLAB_00164b98:\n          param_6[4] = bVar17;\n          param_6[5] = bVar8;\n          param_6[6] = bVar16;\n          param_6[7] = (byte)local_34;\n        }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" (identifier "bVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" (identifier "bVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2[0x10] == 1) goto LAB_00164ce4;" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164ce4;" (goto "goto") (statement_identifier "LAB_00164ce4") (; ";"))) (labeled_statement "LAB_00164b98:\n          param_6[4] = bVar17;" (statement_identifier "LAB_00164b98") (: ":") (expression_statement "param_6[4] = bVar17;" (assignment_expression "param_6[4] = bVar17" (subscript_expression "param_6[4]" (identifier "param_6") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar17")) (; ";"))) (expression_statement "param_6[5] = bVar8;" (assignment_expression "param_6[5] = bVar8" (subscript_expression "param_6[5]" (identifier "param_6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_6[6] = bVar16;" (assignment_expression "param_6[6] = bVar16" (subscript_expression "param_6[6]" (identifier "param_6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar16")) (; ";")) (expression_statement "param_6[7] = (byte)local_34;" (assignment_expression "param_6[7] = (byte)local_34" (subscript_expression "param_6[7]" (identifier "param_6") ([ "[") (number_literal "7") (] "]")) (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (} "}")) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" (else "else") (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar17;\n          bVar9 = bVar16;\n          if (param_2[0x10] != 1) goto LAB_00164b98;\nLAB_00164ce4:\n          param_6[4] = bVar15;\n          param_6[5] = bVar9;\n          param_6[6] = bVar8;\n          param_6[7] = bVar13;\n        }" ({ "{") (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" (identifier "dVar3") (= "=") (binary_expression "dVar3 * (double)DAT_002e8148" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_002e8148" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e8148")))) (; ";")) (if_statement "if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" (if "if") (parenthesized_expression "(DAT_002e8160 <= dVar3)" (( "(") (binary_expression "DAT_002e8160 <= dVar3" (identifier "DAT_002e8160") (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }" ({ "{") (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" (identifier "bVar16") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" (identifier "bVar8") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" (identifier "bVar17") (= "=") (number_literal "0xff")) (; ";")) (} "}")) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" (else "else") (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n          }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")"))))) (; ";")) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (cast_expression "(byte)lVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "lVar2"))) (; ";")) (expression_statement "bVar16 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar16 = (byte)((ulonglong)lVar2 >> 8)" (identifier "bVar16") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 8)" (( "(") (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 0x18)" (identifier "bVar17") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 0x18)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x10)" (identifier "bVar8") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 0x10)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" (identifier "bVar15") (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (expression_statement "bVar13 = bVar17;" (assignment_expression "bVar13 = bVar17" (identifier "bVar13") (= "=") (identifier "bVar17")) (; ";")) (expression_statement "bVar9 = bVar16;" (assignment_expression "bVar9 = bVar16" (identifier "bVar9") (= "=") (identifier "bVar16")) (; ";")) (if_statement "if (param_2[0x10] != 1) goto LAB_00164b98;" (if "if") (parenthesized_expression "(param_2[0x10] != 1)" (( "(") (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164b98;" (goto "goto") (statement_identifier "LAB_00164b98") (; ";"))) (labeled_statement "LAB_00164ce4:\n          param_6[4] = bVar15;" (statement_identifier "LAB_00164ce4") (: ":") (expression_statement "param_6[4] = bVar15;" (assignment_expression "param_6[4] = bVar15" (subscript_expression "param_6[4]" (identifier "param_6") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar15")) (; ";"))) (expression_statement "param_6[5] = bVar9;" (assignment_expression "param_6[5] = bVar9" (subscript_expression "param_6[5]" (identifier "param_6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[6] = bVar8;" (assignment_expression "param_6[6] = bVar8" (subscript_expression "param_6[6]" (identifier "param_6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_6[7] = bVar13;" (assignment_expression "param_6[7] = bVar13" (subscript_expression "param_6[7]" (identifier "param_6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (} "}")))) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }\n        else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n          bVar15 = 0;\n          local_34._0_1_ = 0;\n          bVar13 = 0;\n          bVar16 = 0;\n          bVar8 = 0;\n          bVar9 = 0;\n          bVar17 = 0;\n          if (param_2[0x10] == 1) goto LAB_00164cb8;\nLAB_00164c3f:\n          param_6[10] = bVar16;\n          param_6[8] = bVar17;\n          param_6[9] = bVar8;\n          param_6[0xb] = (byte)local_34;\n        }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" (identifier "bVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" (identifier "bVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2[0x10] == 1) goto LAB_00164cb8;" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164cb8;" (goto "goto") (statement_identifier "LAB_00164cb8") (; ";"))) (labeled_statement "LAB_00164c3f:\n          param_6[10] = bVar16;" (statement_identifier "LAB_00164c3f") (: ":") (expression_statement "param_6[10] = bVar16;" (assignment_expression "param_6[10] = bVar16" (subscript_expression "param_6[10]" (identifier "param_6") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "bVar16")) (; ";"))) (expression_statement "param_6[8] = bVar17;" (assignment_expression "param_6[8] = bVar17" (subscript_expression "param_6[8]" (identifier "param_6") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_6[9] = bVar8;" (assignment_expression "param_6[9] = bVar8" (subscript_expression "param_6[9]" (identifier "param_6") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_6[0xb] = (byte)local_34;" (assignment_expression "param_6[0xb] = (byte)local_34" (subscript_expression "param_6[0xb]" (identifier "param_6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (} "}")) (else_clause "else {\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" (else "else") (compound_statement "{\n          dVar3 = dVar3 * (double)DAT_002e8148;\n          if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar15 = (byte)local_34;\n          bVar13 = bVar16;\n          bVar9 = bVar17;\n          if (param_2[0x10] != 1) goto LAB_00164c3f;\nLAB_00164cb8:\n          param_6[8] = bVar15;\n          param_6[9] = bVar13;\n          param_6[10] = bVar8;\n          param_6[0xb] = bVar9;\n        }" ({ "{") (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" (identifier "dVar3") (= "=") (binary_expression "dVar3 * (double)DAT_002e8148" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_002e8148" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e8148")))) (; ";")) (if_statement "if (DAT_002e8160 <= dVar3) {\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }\n          else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" (if "if") (parenthesized_expression "(DAT_002e8160 <= dVar3)" (( "(") (binary_expression "DAT_002e8160 <= dVar3" (identifier "DAT_002e8160") (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n            local_34._0_1_ = 0xff;\n            bVar16 = 0xff;\n            bVar8 = 0xff;\n            bVar17 = 0xff;\n          }" ({ "{") (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" (identifier "bVar16") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar8 = 0xff;" (assignment_expression "bVar8 = 0xff" (identifier "bVar8") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" (identifier "bVar17") (= "=") (number_literal "0xff")) (; ";")) (} "}")) (else_clause "else {\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" (else "else") (compound_statement "{\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar16 = (byte)((ulonglong)lVar2 >> 8);\n          }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")"))))) (; ";")) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (cast_expression "(byte)lVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "lVar2"))) (; ";")) (expression_statement "bVar17 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar17 = (byte)((ulonglong)lVar2 >> 0x18)" (identifier "bVar17") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 0x18)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar8 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar8 = (byte)((ulonglong)lVar2 >> 0x10)" (identifier "bVar8") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 0x10)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar16 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar16 = (byte)((ulonglong)lVar2 >> 8)" (identifier "bVar16") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 8)" (( "(") (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar15 = (byte)local_34;" (assignment_expression "bVar15 = (byte)local_34" (identifier "bVar15") (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (expression_statement "bVar13 = bVar16;" (assignment_expression "bVar13 = bVar16" (identifier "bVar13") (= "=") (identifier "bVar16")) (; ";")) (expression_statement "bVar9 = bVar17;" (assignment_expression "bVar9 = bVar17" (identifier "bVar9") (= "=") (identifier "bVar17")) (; ";")) (if_statement "if (param_2[0x10] != 1) goto LAB_00164c3f;" (if "if") (parenthesized_expression "(param_2[0x10] != 1)" (( "(") (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164c3f;" (goto "goto") (statement_identifier "LAB_00164c3f") (; ";"))) (labeled_statement "LAB_00164cb8:\n          param_6[8] = bVar15;" (statement_identifier "LAB_00164cb8") (: ":") (expression_statement "param_6[8] = bVar15;" (assignment_expression "param_6[8] = bVar15" (subscript_expression "param_6[8]" (identifier "param_6") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "bVar15")) (; ";"))) (expression_statement "param_6[9] = bVar13;" (assignment_expression "param_6[9] = bVar13" (subscript_expression "param_6[9]" (identifier "param_6") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[10] = bVar8;" (assignment_expression "param_6[10] = bVar8" (subscript_expression "param_6[10]" (identifier "param_6") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_6[0xb] = bVar9;" (assignment_expression "param_6[0xb] = bVar9" (subscript_expression "param_6[0xb]" (identifier "param_6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (} "}")))) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }\n        else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00164c70:\n          local_34._0_1_ = 0xff;\n          bVar9 = 0xff;\n          bVar13 = 0xff;\n          bVar15 = 0xff;\n          bVar8 = (byte)local_34;\n          bVar17 = 0xff;\n          bVar16 = 0xff;\n          if (param_2[0x10] != 1) goto LAB_00164a1f;\nLAB_00164c8e:\n          bVar8 = bVar15;\n          param_6[0xc] = (byte)local_34;\n          param_6[0xd] = bVar9;\n          param_6[0xe] = bVar17;\n        }" ({ "{") (labeled_statement "LAB_00164c70:\n          local_34._0_1_ = 0xff;" (statement_identifier "LAB_00164c70") (: ":") (expression_statement "local_34._0_1_ = 0xff;" (assignment_expression "local_34._0_1_ = 0xff" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0xff")) (; ";"))) (expression_statement "bVar9 = 0xff;" (assignment_expression "bVar9 = 0xff" (identifier "bVar9") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar13 = 0xff;" (assignment_expression "bVar13 = 0xff" (identifier "bVar13") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar15 = 0xff;" (assignment_expression "bVar15 = 0xff" (identifier "bVar15") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar8 = (byte)local_34;" (assignment_expression "bVar8 = (byte)local_34" (identifier "bVar8") (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" (identifier "bVar17") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "bVar16 = 0xff;" (assignment_expression "bVar16 = 0xff" (identifier "bVar16") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (param_2[0x10] != 1) goto LAB_00164a1f;" (if "if") (parenthesized_expression "(param_2[0x10] != 1)" (( "(") (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164a1f;" (goto "goto") (statement_identifier "LAB_00164a1f") (; ";"))) (labeled_statement "LAB_00164c8e:\n          bVar8 = bVar15;" (statement_identifier "LAB_00164c8e") (: ":") (expression_statement "bVar8 = bVar15;" (assignment_expression "bVar8 = bVar15" (identifier "bVar8") (= "=") (identifier "bVar15")) (; ";"))) (expression_statement "param_6[0xc] = (byte)local_34;" (assignment_expression "param_6[0xc] = (byte)local_34" (subscript_expression "param_6[0xc]" (identifier "param_6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (expression_statement "param_6[0xd] = bVar9;" (assignment_expression "param_6[0xd] = bVar9" (subscript_expression "param_6[0xd]" (identifier "param_6") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[0xe] = bVar17;" (assignment_expression "param_6[0xe] = bVar17" (subscript_expression "param_6[0xe]" (identifier "param_6") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (} "}")) (else_clause "else {\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" (else "else") (compound_statement "{\n          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n          if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }\n          bVar8 = (byte)local_34;\n          bVar17 = bVar13;\n          bVar16 = bVar9;\n          if (param_2[0x10] == 1) goto LAB_00164c8e;\nLAB_00164a1f:\n          param_6[0xd] = bVar13;\n          param_6[0xc] = bVar15;\n          param_6[0xe] = bVar16;\n        }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (dVar3 <= 0.0) {\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }\n          else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" (if "if") (parenthesized_expression "(dVar3 <= 0.0)" (( "(") (binary_expression "dVar3 <= 0.0" (identifier "dVar3") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n            local_34._0_1_ = 0;\n            bVar9 = 0;\n            bVar13 = 0;\n            bVar15 = 0;\n          }" ({ "{") (expression_statement "local_34._0_1_ = 0;" (assignment_expression "local_34._0_1_ = 0" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" (identifier "bVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" (else "else") (compound_statement "{\n            dVar3 = dVar3 * (double)DAT_002e8148;\n            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;\n            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);\n            local_34._0_1_ = (byte)lVar2;\n            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);\n            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);\n            bVar9 = (byte)((ulonglong)lVar2 >> 8);\n          }" ({ "{") (expression_statement "dVar3 = dVar3 * (double)DAT_002e8148;" (assignment_expression "dVar3 = dVar3 * (double)DAT_002e8148" (identifier "dVar3") (= "=") (binary_expression "dVar3 * (double)DAT_002e8148" (identifier "dVar3") (* "*") (cast_expression "(double)DAT_002e8148" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002e8148")))) (; ";")) (if_statement "if (DAT_002e8160 <= dVar3) goto LAB_00164c70;" (if "if") (parenthesized_expression "(DAT_002e8160 <= dVar3)" (( "(") (binary_expression "DAT_002e8160 <= dVar3" (identifier "DAT_002e8160") (<= "<=") (identifier "dVar3")) () ")")) (goto_statement "goto LAB_00164c70;" (goto "goto") (statement_identifier "LAB_00164c70") (; ";"))) (expression_statement "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar3 + (double)DAT_002df2b8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 + (double)DAT_002df2b8)" (identifier "ROUND") (argument_list "(dVar3 + (double)DAT_002df2b8)" (( "(") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8"))) () ")"))))) (; ";")) (expression_statement "local_34._0_1_ = (byte)lVar2;" (assignment_expression "local_34._0_1_ = (byte)lVar2" (field_expression "local_34._0_1_" (identifier "local_34") (. ".") (field_identifier "_0_1_")) (= "=") (cast_expression "(byte)lVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "lVar2"))) (; ";")) (expression_statement "bVar15 = (byte)((ulonglong)lVar2 >> 0x18);" (assignment_expression "bVar15 = (byte)((ulonglong)lVar2 >> 0x18)" (identifier "bVar15") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 0x18)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x18" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((ulonglong)lVar2 >> 0x10);" (assignment_expression "bVar13 = (byte)((ulonglong)lVar2 >> 0x10)" (identifier "bVar13") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 0x10)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x10" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar9 = (byte)((ulonglong)lVar2 >> 8);" (assignment_expression "bVar9 = (byte)((ulonglong)lVar2 >> 8)" (identifier "bVar9") (= "=") (call_expression "(byte)((ulonglong)lVar2 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)lVar2 >> 8)" (( "(") (binary_expression "(ulonglong)lVar2 >> 8" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar8 = (byte)local_34;" (assignment_expression "bVar8 = (byte)local_34" (identifier "bVar8") (= "=") (cast_expression "(byte)local_34" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_34"))) (; ";")) (expression_statement "bVar17 = bVar13;" (assignment_expression "bVar17 = bVar13" (identifier "bVar17") (= "=") (identifier "bVar13")) (; ";")) (expression_statement "bVar16 = bVar9;" (assignment_expression "bVar16 = bVar9" (identifier "bVar16") (= "=") (identifier "bVar9")) (; ";")) (if_statement "if (param_2[0x10] == 1) goto LAB_00164c8e;" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164c8e;" (goto "goto") (statement_identifier "LAB_00164c8e") (; ";"))) (labeled_statement "LAB_00164a1f:\n          param_6[0xd] = bVar13;" (statement_identifier "LAB_00164a1f") (: ":") (expression_statement "param_6[0xd] = bVar13;" (assignment_expression "param_6[0xd] = bVar13" (subscript_expression "param_6[0xd]" (identifier "param_6") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "bVar13")) (; ";"))) (expression_statement "param_6[0xc] = bVar15;" (assignment_expression "param_6[0xc] = bVar15" (subscript_expression "param_6[0xc]" (identifier "param_6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[0xe] = bVar16;" (assignment_expression "param_6[0xe] = bVar16" (subscript_expression "param_6[0xe]" (identifier "param_6") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "bVar16")) (; ";")) (} "}")))) (expression_statement "param_6[0xf] = bVar8;" (assignment_expression "param_6[0xf] = bVar8" (subscript_expression "param_6[0xf]" (identifier "param_6") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" (identifier "local_b4") (= "=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9] + 0x10;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x10" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9] + 0x10" (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (+ "+") (number_literal "0x10"))) (; ";")) (if_statement "if (local_b4 == param_3) {\n          return;\n        }" (if "if") (parenthesized_expression "(local_b4 == param_3)" (( "(") (binary_expression "local_b4 == param_3" (identifier "local_b4") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (if_statement "if (uVar18 != 0x40) goto LAB_001642d0;" (if "if") (parenthesized_expression "(uVar18 != 0x40)" (( "(") (binary_expression "uVar18 != 0x40" (identifier "uVar18") (!= "!=") (number_literal "0x40")) () ")")) (goto_statement "goto LAB_001642d0;" (goto "goto") (statement_identifier "LAB_001642d0") (; ";"))) (if_statement "if (param_2[2] == 1) {\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }" (if "if") (parenthesized_expression "(param_2[2] == 1)" (( "(") (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      local_b4 = 0;\n      dVar3 = (double)DAT_002df8a8;\n      if (param_3 < 1) {\n        return;\n      }\n      do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);\n      return;\n    }" ({ "{") (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "dVar3 = (double)DAT_002df8a8;" (assignment_expression "dVar3 = (double)DAT_002df8a8" (identifier "dVar3") (= "=") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8"))) (; ";")) (if_statement "if (param_3 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      } while (local_b4 != param_3);" (do "do") (compound_statement "{\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }\n        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }\n        dVar5 = dVar3;\n        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }\n        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);\n        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);\n        local_ac = SUB81(dVar5,0);\n        bVar15 = local_ac;\n        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);\n        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);\n        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);\n        local_94 = (byte)((ulonglong)dVar5 >> 0x18);\n        local_8c = (byte)((ulonglong)dVar5 >> 0x10);\n        local_ac = (byte)((ulonglong)dVar5 >> 8);\n        if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }\n        param_6[0x1f] = bVar13;\n        local_b4 = local_b4 + 1;\n        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n        param_6 = param_6 + param_2[9] + 0x20;\n      }" ({ "{") (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (identifier "dVar5") (= "=") (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (* "*") (pointer_expression "*(double *)(param_2 + 0x11)" (* "*") (cast_expression "(double *)(param_2 + 0x11)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x11)" (( "(") (binary_expression "param_2 + 0x11" (identifier "param_2") (+ "+") (number_literal "0x11")) () ")"))))) (+ "+") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))))) (; ";")) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x28)" (identifier "bVar15") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x28)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x20)" (identifier "bVar13") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" (identifier "local_94") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x18)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" (identifier "local_a4") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x38)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x38")) () ")")))) (; ";")) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" (identifier "local_8c") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x10)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" (identifier "local_9c") (. ".") (field_identifier "_0_1_")) (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x30)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" (identifier "local_ac") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 8)" (( "(") (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }\n        else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *param_6 = SUB81(dVar5,0);\n          param_6[4] = bVar13;\n          param_6[5] = bVar15;\n          param_6[1] = local_ac;\n          param_6[2] = local_8c;\n          param_6[3] = local_94;\n          param_6[6] = (byte)local_9c;\n          param_6[7] = local_a4;\n        }" ({ "{") (expression_statement "*param_6 = SUB81(dVar5,0);" (assignment_expression "*param_6 = SUB81(dVar5,0)" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (call_expression "SUB81(dVar5,0)" (identifier "SUB81") (argument_list "(dVar5,0)" (( "(") (identifier "dVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[4] = bVar13;" (assignment_expression "param_6[4] = bVar13" (subscript_expression "param_6[4]" (identifier "param_6") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[5] = bVar15;" (assignment_expression "param_6[5] = bVar15" (subscript_expression "param_6[5]" (identifier "param_6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[1] = local_ac;" (assignment_expression "param_6[1] = local_ac" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6[2] = local_8c;" (assignment_expression "param_6[2] = local_8c" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "param_6[3] = local_94;" (assignment_expression "param_6[3] = local_94" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "param_6[6] = (byte)local_9c;" (assignment_expression "param_6[6] = (byte)local_9c" (subscript_expression "param_6[6]" (identifier "param_6") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(byte)local_9c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_9c"))) (; ";")) (expression_statement "param_6[7] = local_a4;" (assignment_expression "param_6[7] = local_a4" (subscript_expression "param_6[7]" (identifier "param_6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (} "}")) (else_clause "else {\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" (else "else") (compound_statement "{\n          param_6[2] = bVar15;\n          param_6[3] = bVar13;\n          param_6[7] = SUB81(dVar5,0);\n          param_6[4] = local_94;\n          *param_6 = local_a4;\n          param_6[5] = local_8c;\n          param_6[1] = (byte)local_9c;\n          param_6[6] = local_ac;\n        }" ({ "{") (expression_statement "param_6[2] = bVar15;" (assignment_expression "param_6[2] = bVar15" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[3] = bVar13;" (assignment_expression "param_6[3] = bVar13" (subscript_expression "param_6[3]" (identifier "param_6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[7] = SUB81(dVar5,0);" (assignment_expression "param_6[7] = SUB81(dVar5,0)" (subscript_expression "param_6[7]" (identifier "param_6") ([ "[") (number_literal "7") (] "]")) (= "=") (call_expression "SUB81(dVar5,0)" (identifier "SUB81") (argument_list "(dVar5,0)" (( "(") (identifier "dVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[4] = local_94;" (assignment_expression "param_6[4] = local_94" (subscript_expression "param_6[4]" (identifier "param_6") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "*param_6 = local_a4;" (assignment_expression "*param_6 = local_a4" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[5] = local_8c;" (assignment_expression "param_6[5] = local_8c" (subscript_expression "param_6[5]" (identifier "param_6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "param_6[1] = (byte)local_9c;" (assignment_expression "param_6[1] = (byte)local_9c" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(byte)local_9c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_9c"))) (; ";")) (expression_statement "param_6[6] = local_ac;" (assignment_expression "param_6[6] = local_ac" (subscript_expression "param_6[6]" (identifier "param_6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (} "}")))) (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (identifier "dVar5") (= "=") (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (* "*") (pointer_expression "*(double *)(param_2 + 0x11)" (* "*") (cast_expression "(double *)(param_2 + 0x11)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x11)" (( "(") (binary_expression "param_2 + 0x11" (identifier "param_2") (+ "+") (number_literal "0x11")) () ")"))))) (+ "+") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))))) (; ";")) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x28)" (identifier "bVar15") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x28)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x20)" (identifier "bVar13") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" (identifier "local_94") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x18)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" (identifier "local_a4") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x38)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x38")) () ")")))) (; ";")) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" (identifier "local_8c") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x10)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" (identifier "local_9c") (. ".") (field_identifier "_0_1_")) (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x30)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" (identifier "local_ac") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 8)" (( "(") (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }\n        else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          param_6[8] = SUB81(dVar5,0);\n          param_6[0xc] = bVar13;\n          param_6[0xd] = bVar15;\n          param_6[9] = local_ac;\n          param_6[10] = local_8c;\n          param_6[0xb] = local_94;\n          param_6[0xe] = (byte)local_9c;\n          param_6[0xf] = local_a4;\n        }" ({ "{") (expression_statement "param_6[8] = SUB81(dVar5,0);" (assignment_expression "param_6[8] = SUB81(dVar5,0)" (subscript_expression "param_6[8]" (identifier "param_6") ([ "[") (number_literal "8") (] "]")) (= "=") (call_expression "SUB81(dVar5,0)" (identifier "SUB81") (argument_list "(dVar5,0)" (( "(") (identifier "dVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[0xc] = bVar13;" (assignment_expression "param_6[0xc] = bVar13" (subscript_expression "param_6[0xc]" (identifier "param_6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[0xd] = bVar15;" (assignment_expression "param_6[0xd] = bVar15" (subscript_expression "param_6[0xd]" (identifier "param_6") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[9] = local_ac;" (assignment_expression "param_6[9] = local_ac" (subscript_expression "param_6[9]" (identifier "param_6") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6[10] = local_8c;" (assignment_expression "param_6[10] = local_8c" (subscript_expression "param_6[10]" (identifier "param_6") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "param_6[0xb] = local_94;" (assignment_expression "param_6[0xb] = local_94" (subscript_expression "param_6[0xb]" (identifier "param_6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "param_6[0xe] = (byte)local_9c;" (assignment_expression "param_6[0xe] = (byte)local_9c" (subscript_expression "param_6[0xe]" (identifier "param_6") ([ "[") (number_literal "0xe") (] "]")) (= "=") (cast_expression "(byte)local_9c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_9c"))) (; ";")) (expression_statement "param_6[0xf] = local_a4;" (assignment_expression "param_6[0xf] = local_a4" (subscript_expression "param_6[0xf]" (identifier "param_6") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (} "}")) (else_clause "else {\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" (else "else") (compound_statement "{\n          param_6[10] = bVar15;\n          param_6[0xb] = bVar13;\n          param_6[0xf] = SUB81(dVar5,0);\n          param_6[0xc] = local_94;\n          param_6[8] = local_a4;\n          param_6[0xd] = local_8c;\n          param_6[9] = (byte)local_9c;\n          param_6[0xe] = local_ac;\n        }" ({ "{") (expression_statement "param_6[10] = bVar15;" (assignment_expression "param_6[10] = bVar15" (subscript_expression "param_6[10]" (identifier "param_6") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[0xb] = bVar13;" (assignment_expression "param_6[0xb] = bVar13" (subscript_expression "param_6[0xb]" (identifier "param_6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[0xf] = SUB81(dVar5,0);" (assignment_expression "param_6[0xf] = SUB81(dVar5,0)" (subscript_expression "param_6[0xf]" (identifier "param_6") ([ "[") (number_literal "0xf") (] "]")) (= "=") (call_expression "SUB81(dVar5,0)" (identifier "SUB81") (argument_list "(dVar5,0)" (( "(") (identifier "dVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[0xc] = local_94;" (assignment_expression "param_6[0xc] = local_94" (subscript_expression "param_6[0xc]" (identifier "param_6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "param_6[8] = local_a4;" (assignment_expression "param_6[8] = local_a4" (subscript_expression "param_6[8]" (identifier "param_6") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[0xd] = local_8c;" (assignment_expression "param_6[0xd] = local_8c" (subscript_expression "param_6[0xd]" (identifier "param_6") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "param_6[9] = (byte)local_9c;" (assignment_expression "param_6[9] = (byte)local_9c" (subscript_expression "param_6[9]" (identifier "param_6") ([ "[") (number_literal "9") (] "]")) (= "=") (cast_expression "(byte)local_9c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_9c"))) (; ";")) (expression_statement "param_6[0xe] = local_ac;" (assignment_expression "param_6[0xe] = local_ac" (subscript_expression "param_6[0xe]" (identifier "param_6") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (} "}")))) (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (identifier "dVar5") (= "=") (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *\n                *(double *)(param_2 + 0x11)" (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (* "*") (pointer_expression "*(double *)(param_2 + 0x11)" (* "*") (cast_expression "(double *)(param_2 + 0x11)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x11)" (( "(") (binary_expression "param_2 + 0x11" (identifier "param_2") (+ "+") (number_literal "0x11")) () ")"))))) (+ "+") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))))) (; ";")) (expression_statement "bVar15 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar5 >> 0x20)" (identifier "bVar15") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x28)" (identifier "bVar13") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x28)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "local_a4 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "local_a4 = (byte)((ulonglong)dVar5 >> 0x38)" (identifier "local_a4") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x38)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x38")) () ")")))) (; ";")) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" (identifier "local_9c") (. ".") (field_identifier "_0_1_")) (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x30)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" (identifier "local_94") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x18)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" (identifier "local_8c") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x10)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" (identifier "local_ac") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 8)" (( "(") (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }\n        else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          param_6[0x10] = SUB81(dVar5,0);\n          param_6[0x14] = bVar15;\n          param_6[0x11] = local_ac;\n          param_6[0x12] = local_8c;\n          param_6[0x13] = local_94;\n          param_6[0x15] = bVar13;\n          param_6[0x16] = (byte)local_9c;\n          param_6[0x17] = local_a4;\n        }" ({ "{") (expression_statement "param_6[0x10] = SUB81(dVar5,0);" (assignment_expression "param_6[0x10] = SUB81(dVar5,0)" (subscript_expression "param_6[0x10]" (identifier "param_6") ([ "[") (number_literal "0x10") (] "]")) (= "=") (call_expression "SUB81(dVar5,0)" (identifier "SUB81") (argument_list "(dVar5,0)" (( "(") (identifier "dVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[0x14] = bVar15;" (assignment_expression "param_6[0x14] = bVar15" (subscript_expression "param_6[0x14]" (identifier "param_6") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[0x11] = local_ac;" (assignment_expression "param_6[0x11] = local_ac" (subscript_expression "param_6[0x11]" (identifier "param_6") ([ "[") (number_literal "0x11") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6[0x12] = local_8c;" (assignment_expression "param_6[0x12] = local_8c" (subscript_expression "param_6[0x12]" (identifier "param_6") ([ "[") (number_literal "0x12") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "param_6[0x13] = local_94;" (assignment_expression "param_6[0x13] = local_94" (subscript_expression "param_6[0x13]" (identifier "param_6") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "param_6[0x15] = bVar13;" (assignment_expression "param_6[0x15] = bVar13" (subscript_expression "param_6[0x15]" (identifier "param_6") ([ "[") (number_literal "0x15") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[0x16] = (byte)local_9c;" (assignment_expression "param_6[0x16] = (byte)local_9c" (subscript_expression "param_6[0x16]" (identifier "param_6") ([ "[") (number_literal "0x16") (] "]")) (= "=") (cast_expression "(byte)local_9c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_9c"))) (; ";")) (expression_statement "param_6[0x17] = local_a4;" (assignment_expression "param_6[0x17] = local_a4" (subscript_expression "param_6[0x17]" (identifier "param_6") ([ "[") (number_literal "0x17") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (} "}")) (else_clause "else {\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" (else "else") (compound_statement "{\n          param_6[0x13] = bVar15;\n          param_6[0x17] = SUB81(dVar5,0);\n          param_6[0x10] = local_a4;\n          param_6[0x11] = (byte)local_9c;\n          param_6[0x12] = bVar13;\n          param_6[0x14] = local_94;\n          param_6[0x15] = local_8c;\n          param_6[0x16] = local_ac;\n        }" ({ "{") (expression_statement "param_6[0x13] = bVar15;" (assignment_expression "param_6[0x13] = bVar15" (subscript_expression "param_6[0x13]" (identifier "param_6") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[0x17] = SUB81(dVar5,0);" (assignment_expression "param_6[0x17] = SUB81(dVar5,0)" (subscript_expression "param_6[0x17]" (identifier "param_6") ([ "[") (number_literal "0x17") (] "]")) (= "=") (call_expression "SUB81(dVar5,0)" (identifier "SUB81") (argument_list "(dVar5,0)" (( "(") (identifier "dVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_6[0x10] = local_a4;" (assignment_expression "param_6[0x10] = local_a4" (subscript_expression "param_6[0x10]" (identifier "param_6") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "param_6[0x11] = (byte)local_9c;" (assignment_expression "param_6[0x11] = (byte)local_9c" (subscript_expression "param_6[0x11]" (identifier "param_6") ([ "[") (number_literal "0x11") (] "]")) (= "=") (cast_expression "(byte)local_9c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_9c"))) (; ";")) (expression_statement "param_6[0x12] = bVar13;" (assignment_expression "param_6[0x12] = bVar13" (subscript_expression "param_6[0x12]" (identifier "param_6") ([ "[") (number_literal "0x12") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[0x14] = local_94;" (assignment_expression "param_6[0x14] = local_94" (subscript_expression "param_6[0x14]" (identifier "param_6") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "param_6[0x15] = local_8c;" (assignment_expression "param_6[0x15] = local_8c" (subscript_expression "param_6[0x15]" (identifier "param_6") ([ "[") (number_literal "0x15") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "param_6[0x16] = local_ac;" (assignment_expression "param_6[0x16] = local_ac" (subscript_expression "param_6[0x16]" (identifier "param_6") ([ "[") (number_literal "0x16") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (} "}")))) (expression_statement "dVar5 = dVar3;" (assignment_expression "dVar5 = dVar3" (identifier "dVar5") (= "=") (identifier "dVar3")) (; ";")) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);\n        }" ({ "{") (expression_statement "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);" (assignment_expression "dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (identifier "dVar5") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);" (assignment_expression "dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (identifier "dVar5") (= "=") (binary_expression "dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3)" (binary_expression "dVar5 * *(double *)(param_2 + 0x11)" (identifier "dVar5") (* "*") (pointer_expression "*(double *)(param_2 + 0x11)" (* "*") (cast_expression "(double *)(param_2 + 0x11)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x11)" (( "(") (binary_expression "param_2 + 0x11" (identifier "param_2") (+ "+") (number_literal "0x11")) () ")"))))) (+ "+") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))))) (; ";")) (expression_statement "bVar13 = (byte)((ulonglong)dVar5 >> 0x38);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar5 >> 0x38)" (identifier "bVar13") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x38)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x38)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x38" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x38")) () ")")))) (; ";")) (expression_statement "local_ac = SUB81(dVar5,0);" (assignment_expression "local_ac = SUB81(dVar5,0)" (identifier "local_ac") (= "=") (call_expression "SUB81(dVar5,0)" (identifier "SUB81") (argument_list "(dVar5,0)" (( "(") (identifier "dVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar15 = local_ac;" (assignment_expression "bVar15 = local_ac" (identifier "bVar15") (= "=") (identifier "local_ac")) (; ";")) (expression_statement "bVar9 = (byte)((ulonglong)dVar5 >> 0x20);" (assignment_expression "bVar9 = (byte)((ulonglong)dVar5 >> 0x20)" (identifier "bVar9") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x20" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "bVar8 = (byte)((ulonglong)dVar5 >> 0x28);" (assignment_expression "bVar8 = (byte)((ulonglong)dVar5 >> 0x28)" (identifier "bVar8") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x28)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x28)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x28" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);" (assignment_expression "local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30)" (field_expression "local_9c._0_1_" (identifier "local_9c") (. ".") (field_identifier "_0_1_")) (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x30)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x30" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "local_94 = (byte)((ulonglong)dVar5 >> 0x18);" (assignment_expression "local_94 = (byte)((ulonglong)dVar5 >> 0x18)" (identifier "local_94") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x18)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x18" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_8c = (byte)((ulonglong)dVar5 >> 0x10);" (assignment_expression "local_8c = (byte)((ulonglong)dVar5 >> 0x10)" (identifier "local_8c") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 0x10)" (( "(") (binary_expression "(ulonglong)dVar5 >> 0x10" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_ac = (byte)((ulonglong)dVar5 >> 8);" (assignment_expression "local_ac = (byte)((ulonglong)dVar5 >> 8)" (identifier "local_ac") (= "=") (call_expression "(byte)((ulonglong)dVar5 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar5 >> 8)" (( "(") (binary_expression "(ulonglong)dVar5 >> 8" (cast_expression "(ulonglong)dVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar5")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_2[0x10] == 1) {\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }\n        else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" (if "if") (parenthesized_expression "(param_2[0x10] == 1)" (( "(") (binary_expression "param_2[0x10] == 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          param_6[0x18] = bVar15;\n          param_6[0x1c] = bVar9;\n          param_6[0x19] = local_ac;\n          param_6[0x1a] = local_8c;\n          param_6[0x1b] = local_94;\n          param_6[0x1d] = bVar8;\n          param_6[0x1e] = (byte)local_9c;\n        }" ({ "{") (expression_statement "param_6[0x18] = bVar15;" (assignment_expression "param_6[0x18] = bVar15" (subscript_expression "param_6[0x18]" (identifier "param_6") ([ "[") (number_literal "0x18") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_6[0x1c] = bVar9;" (assignment_expression "param_6[0x1c] = bVar9" (subscript_expression "param_6[0x1c]" (identifier "param_6") ([ "[") (number_literal "0x1c") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[0x19] = local_ac;" (assignment_expression "param_6[0x19] = local_ac" (subscript_expression "param_6[0x19]" (identifier "param_6") ([ "[") (number_literal "0x19") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "param_6[0x1a] = local_8c;" (assignment_expression "param_6[0x1a] = local_8c" (subscript_expression "param_6[0x1a]" (identifier "param_6") ([ "[") (number_literal "0x1a") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "param_6[0x1b] = local_94;" (assignment_expression "param_6[0x1b] = local_94" (subscript_expression "param_6[0x1b]" (identifier "param_6") ([ "[") (number_literal "0x1b") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "param_6[0x1d] = bVar8;" (assignment_expression "param_6[0x1d] = bVar8" (subscript_expression "param_6[0x1d]" (identifier "param_6") ([ "[") (number_literal "0x1d") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_6[0x1e] = (byte)local_9c;" (assignment_expression "param_6[0x1e] = (byte)local_9c" (subscript_expression "param_6[0x1e]" (identifier "param_6") ([ "[") (number_literal "0x1e") (] "]")) (= "=") (cast_expression "(byte)local_9c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_9c"))) (; ";")) (} "}")) (else_clause "else {\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" (else "else") (compound_statement "{\n          param_6[0x1b] = bVar9;\n          param_6[0x18] = bVar13;\n          param_6[0x19] = (byte)local_9c;\n          param_6[0x1a] = bVar8;\n          param_6[0x1c] = local_94;\n          param_6[0x1d] = local_8c;\n          param_6[0x1e] = local_ac;\n          bVar13 = bVar15;\n        }" ({ "{") (expression_statement "param_6[0x1b] = bVar9;" (assignment_expression "param_6[0x1b] = bVar9" (subscript_expression "param_6[0x1b]" (identifier "param_6") ([ "[") (number_literal "0x1b") (] "]")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_6[0x18] = bVar13;" (assignment_expression "param_6[0x18] = bVar13" (subscript_expression "param_6[0x18]" (identifier "param_6") ([ "[") (number_literal "0x18") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_6[0x19] = (byte)local_9c;" (assignment_expression "param_6[0x19] = (byte)local_9c" (subscript_expression "param_6[0x19]" (identifier "param_6") ([ "[") (number_literal "0x19") (] "]")) (= "=") (cast_expression "(byte)local_9c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_9c"))) (; ";")) (expression_statement "param_6[0x1a] = bVar8;" (assignment_expression "param_6[0x1a] = bVar8" (subscript_expression "param_6[0x1a]" (identifier "param_6") ([ "[") (number_literal "0x1a") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_6[0x1c] = local_94;" (assignment_expression "param_6[0x1c] = local_94" (subscript_expression "param_6[0x1c]" (identifier "param_6") ([ "[") (number_literal "0x1c") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "param_6[0x1d] = local_8c;" (assignment_expression "param_6[0x1d] = local_8c" (subscript_expression "param_6[0x1d]" (identifier "param_6") ([ "[") (number_literal "0x1d") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "param_6[0x1e] = local_ac;" (assignment_expression "param_6[0x1e] = local_ac" (subscript_expression "param_6[0x1e]" (identifier "param_6") ([ "[") (number_literal "0x1e") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "bVar13 = bVar15;" (assignment_expression "bVar13 = bVar15" (identifier "bVar13") (= "=") (identifier "bVar15")) (; ";")) (} "}")))) (expression_statement "param_6[0x1f] = bVar13;" (assignment_expression "param_6[0x1f] = bVar13" (subscript_expression "param_6[0x1f]" (identifier "param_6") ([ "[") (number_literal "0x1f") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" (identifier "local_b4") (= "=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9] + 0x20;" (assignment_expression "param_6 = param_6 + param_2[9] + 0x20" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9] + 0x20" (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_b4 != param_3)" (( "(") (binary_expression "local_b4 != param_3" (identifier "local_b4") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar18 < 0x41) {\n    uVar20 = uVar18;\n  }" (if "if") (parenthesized_expression "(uVar18 < 0x41)" (( "(") (binary_expression "uVar18 < 0x41" (identifier "uVar18") (< "<") (number_literal "0x41")) () ")")) (compound_statement "{\n    uVar20 = uVar18;\n  }" ({ "{") (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" (identifier "uVar20") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "bVar13 = (byte)(uVar20 - 1);" (assignment_expression "bVar13 = (byte)(uVar20 - 1)" (identifier "bVar13") (= "=") (call_expression "(byte)(uVar20 - 1)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar20 - 1)" (( "(") (binary_expression "uVar20 - 1" (identifier "uVar20") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar15 = bVar13 & 0x1f;" (assignment_expression "bVar15 = bVar13 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "bVar13 & 0x1f" (identifier "bVar13") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = 2 << (bVar13 & 0x1f);" (assignment_expression "uVar10 = 2 << (bVar13 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "2 << (bVar13 & 0x1f)" (number_literal "2") (<< "<<") (parenthesized_expression "(bVar13 & 0x1f)" (( "(") (binary_expression "bVar13 & 0x1f" (identifier "bVar13") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar21 = uVar10;" (assignment_expression "uVar21 = uVar10" (identifier "uVar21") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;" (assignment_expression "uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15" (identifier "uVar12") (= "=") (binary_expression "0 << bVar15 | 2U >> 0x20 - bVar15" (binary_expression "0 << bVar15" (number_literal "0") (<< "<<") (identifier "bVar15")) (| "|") (binary_expression "2U >> 0x20 - bVar15" (number_literal "2U") (>> ">>") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar20 - 1 & 0x20) != 0) {\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }" (if "if") (parenthesized_expression "((uVar20 - 1 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 - 1 & 0x20) != 0" (parenthesized_expression "(uVar20 - 1 & 0x20)" (( "(") (binary_expression "uVar20 - 1 & 0x20" (binary_expression "uVar20 - 1" (identifier "uVar20") (- "-") (number_literal "1")) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar21 = 0;\n    uVar12 = uVar10;\n  }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" (identifier "uVar12") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "local_7c = uVar21 - 1;" (assignment_expression "local_7c = uVar21 - 1" (identifier "local_7c") (= "=") (binary_expression "uVar21 - 1" (identifier "uVar21") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);" (assignment_expression "iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0)" (identifier "iStack_78") (= "=") (binary_expression "(uVar12 - 1) + (uint)(uVar21 != 0)" (parenthesized_expression "(uVar12 - 1)" (( "(") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1")) () ")")) (+ "+") (call_expression "(uint)(uVar21 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar21 != 0)" (( "(") (binary_expression "uVar21 != 0" (identifier "uVar21") (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (labeled_statement "LAB_00163bfb:\n  if (param_3 < 1) {\n    return;\n  }" (statement_identifier "LAB_00163bfb") (: ":") (if_statement "if (param_3 < 1) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  } while( true );" (do "do") (compound_statement "{\n    local_84 = 0;\n    iVar19 = *(int *)(param_1 + 0x2a8);\n    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);\n    if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    uVar20 = param_2[0x14];\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }\n    if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }\n    if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }\n    if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }\n    if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }\n    local_6c = local_6c + 1;\n    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;\n    param_6 = param_6 + param_2[9];\n    if (local_6c == param_3) {\n      return;\n    }\n    uVar18 = *param_2;\n  }" ({ "{") (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x20) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 0x20) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 0x20) * 8" (pointer_expression "*(int *)(iVar19 + 0x20)" (* "*") (cast_expression "(int *)(iVar19 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x20)" (( "(") (binary_expression "iVar19 + 0x20" (identifier "iVar19") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar3) {\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" ({ "{") (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" (identifier "fVar1") (= "=") (cast_expression "(float)CONCAT44(iStack_78,local_7c)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(iStack_78,local_7c)" (identifier "CONCAT44") (argument_list "(iStack_78,local_7c)" (( "(") (identifier "iStack_78") (, ",") (identifier "local_7c") () ")"))))) (; ";")) (if_statement "if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" (if "if") (parenthesized_expression "(iStack_78 < 0)" (( "(") (binary_expression "iStack_78 < 0" (identifier "iStack_78") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" ({ "{") (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" (identifier "fVar1") (= "=") (binary_expression "fVar1 + DAT_002df8b0" (identifier "fVar1") (+ "+") (identifier "DAT_002df8b0"))) (; ";")) (} "}"))) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" (identifier "local_84") (= "=") (number_literal "-1")) (; ";")) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" (( "(") (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar1")) (* "*") (identifier "dVar3")) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")"))))) (; ";")) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (identifier "local_84") (= "=") (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (identifier "CONCAT44") (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (( "(") (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (number_literal "-0x80000000")) (, ",") (cast_expression "(int)lVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar2")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" (else "else") (compound_statement "{\n          local_84 = (longlong)ROUND(dVar3);\n        }" ({ "{") (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" (identifier "local_84") (= "=") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")"))))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (if_statement "if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" ({ "{") (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (} "}"))) (if_statement "if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" (if "if") (parenthesized_expression "((int)uVar18 < 1)" (( "(") (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (!NAN(dVar3)) goto LAB_00163e10;\n      local_84 = 0;\n    }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" (* "*") (cast_expression "(int *)(iVar19 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x14)" (( "(") (binary_expression "iVar19 + 0x14" (identifier "iVar19") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (!NAN(dVar3)) goto LAB_00163e10;" (if "if") (parenthesized_expression "(!NAN(dVar3))" (( "(") (unary_expression "!NAN(dVar3)" (! "!") (call_expression "NAN(dVar3)" (identifier "NAN") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))) () ")")) (goto_statement "goto LAB_00163e10;" (goto "goto") (statement_identifier "LAB_00163e10") (; ";"))) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" (else "else") (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" ({ "{") (do_statement "do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }\n        uVar20 = param_2[0x14];\n      }" ({ "{") (while_statement "while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163de4;\n        }" ({ "{") (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" (identifier "uVar12") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }" (if "if") (parenthesized_expression "(uVar18 <= uVar20)" (( "(") (binary_expression "uVar18 <= uVar20" (identifier "uVar18") (<= "<=") (identifier "uVar20")) () ")")) (compound_statement "{\n            uVar12 = uVar18;\n          }" ({ "{") (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" (identifier "uVar21") (= "=") (binary_expression "uVar18 - uVar12" (identifier "uVar18") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" (if "if") (parenthesized_expression "(-1 < (int)uVar21)" (( "(") (binary_expression "-1 < (int)uVar21" (number_literal "-1") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n            uVar18 = uVar21;\n          }" ({ "{") (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" (identifier "uVar18") (= "=") (identifier "uVar21")) (; ";")) (} "}"))) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" (if "if") (parenthesized_expression "(uVar20 == 8)" (( "(") (binary_expression "uVar20 == 8" (identifier "uVar20") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n            *param_6 = 0;\n          }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" (identifier "uVar20") (= "=") (binary_expression "uVar20 - uVar12" (identifier "uVar20") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (identifier "uVar10") (= "=") (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_84")) (>> ">>") (identifier "bVar15")) (| "|") (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (<< "<<") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" (if "if") (parenthesized_expression "((uVar18 & 0x20) != 0)" (( "(") (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" (( "(") (binary_expression "uVar18 & 0x20" (identifier "uVar18") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" ({ "{") (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (>> ">>") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (identifier "bVar15") (= "=") (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (( "(") (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" (( "(") (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar12 & 0x1f)" (number_literal "-1") (<< "<<") (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")) () ")"))) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            bVar15 = 0;\n          }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (| "|") (identifier "bVar15"))) (; ";")) (if_statement "if (uVar20 != 0) break;" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (if_statement "if ((int)uVar21 < 1) goto LAB_00163de4;" (if "if") (parenthesized_expression "((int)uVar21 < 1)" (( "(") (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00163de4;" (goto "goto") (statement_identifier "LAB_00163de4") (; ";"))) (} "}"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar21)" (( "(") (binary_expression "0 < (int)uVar21" (number_literal "0") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (; ";")) (labeled_statement "LAB_00163de4:\n      iVar19 = *(int *)(param_1 + 0x2a8);" (statement_identifier "LAB_00163de4") (: ":") (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x14) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 0x14) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 0x14) * 8" (pointer_expression "*(int *)(iVar19 + 0x14)" (* "*") (cast_expression "(int *)(iVar19 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x14)" (( "(") (binary_expression "iVar19 + 0x14" (identifier "iVar19") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(NAN(dVar3))" (( "(") (call_expression "NAN(dVar3)" (identifier "NAN") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")"))) () ")")) (compound_statement "{\n        local_84 = 0;\n      }" ({ "{") (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" (else "else") (compound_statement "{\nLAB_00163e10:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" ({ "{") (labeled_statement "LAB_00163e10:\n        local_84 = 0;" (statement_identifier "LAB_00163e10") (: ":") (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" ({ "{") (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" (identifier "fVar1") (= "=") (cast_expression "(float)CONCAT44(iStack_78,local_7c)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(iStack_78,local_7c)" (identifier "CONCAT44") (argument_list "(iStack_78,local_7c)" (( "(") (identifier "iStack_78") (, ",") (identifier "local_7c") () ")"))))) (; ";")) (if_statement "if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" (if "if") (parenthesized_expression "(iStack_78 < 0)" (( "(") (binary_expression "iStack_78 < 0" (identifier "iStack_78") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" ({ "{") (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" (identifier "fVar1") (= "=") (binary_expression "fVar1 + DAT_002df8b0" (identifier "fVar1") (+ "+") (identifier "DAT_002df8b0"))) (; ";")) (} "}"))) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" (identifier "local_84") (= "=") (number_literal "-1")) (; ";")) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" (( "(") (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar1")) (* "*") (identifier "dVar3")) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")"))))) (; ";")) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (identifier "local_84") (= "=") (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (identifier "CONCAT44") (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (( "(") (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (number_literal "-0x80000000")) (, ",") (cast_expression "(int)lVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar2")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" (else "else") (compound_statement "{\n              local_84 = (longlong)ROUND(dVar3);\n            }" ({ "{") (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" (identifier "local_84") (= "=") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")"))))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (} "}")))) (if_statement "if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" ({ "{") (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (} "}"))) (} "}")))) (if_statement "if ((int)uVar18 < 1) {\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }\n    else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" (if "if") (parenthesized_expression "((int)uVar18 < 1)" (( "(") (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (!NAN(dVar3)) goto LAB_00163fd8;\n      local_84 = 0;\n    }" ({ "{") (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" (* "*") (cast_expression "(int *)(iVar19 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 8)" (( "(") (binary_expression "iVar19 + 8" (identifier "iVar19") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (!NAN(dVar3)) goto LAB_00163fd8;" (if "if") (parenthesized_expression "(!NAN(dVar3))" (( "(") (unary_expression "!NAN(dVar3)" (! "!") (call_expression "NAN(dVar3)" (identifier "NAN") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")")))) () ")")) (goto_statement "goto LAB_00163fd8;" (goto "goto") (statement_identifier "LAB_00163fd8") (; ";"))) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" (else "else") (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);\n      if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }\n      if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }\n    }" ({ "{") (do_statement "do {\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }\n        uVar20 = param_2[0x14];\n      }" ({ "{") (while_statement "while( true ) {\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar12 = uVar20;\n          if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00163fac;\n        }" ({ "{") (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" (identifier "uVar12") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 <= uVar20) {\n            uVar12 = uVar18;\n          }" (if "if") (parenthesized_expression "(uVar18 <= uVar20)" (( "(") (binary_expression "uVar18 <= uVar20" (identifier "uVar18") (<= "<=") (identifier "uVar20")) () ")")) (compound_statement "{\n            uVar12 = uVar18;\n          }" ({ "{") (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" (identifier "uVar21") (= "=") (binary_expression "uVar18 - uVar12" (identifier "uVar18") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" (if "if") (parenthesized_expression "(-1 < (int)uVar21)" (( "(") (binary_expression "-1 < (int)uVar21" (number_literal "-1") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n            uVar18 = uVar21;\n          }" ({ "{") (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" (identifier "uVar18") (= "=") (identifier "uVar21")) (; ";")) (} "}"))) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" (if "if") (parenthesized_expression "(uVar20 == 8)" (( "(") (binary_expression "uVar20 == 8" (identifier "uVar20") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n            *param_6 = 0;\n          }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" (identifier "uVar20") (= "=") (binary_expression "uVar20 - uVar12" (identifier "uVar20") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (identifier "uVar10") (= "=") (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_84")) (>> ">>") (identifier "bVar15")) (| "|") (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (<< "<<") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" (if "if") (parenthesized_expression "((uVar18 & 0x20) != 0)" (( "(") (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" (( "(") (binary_expression "uVar18 & 0x20" (identifier "uVar18") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" ({ "{") (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (>> ">>") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (identifier "bVar15") (= "=") (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (( "(") (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" (( "(") (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar12 & 0x1f)" (number_literal "-1") (<< "<<") (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")) () ")"))) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            bVar15 = 0;\n          }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (| "|") (identifier "bVar15"))) (; ";")) (if_statement "if (uVar20 != 0) break;" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (if_statement "if ((int)uVar21 < 1) goto LAB_00163fac;" (if "if") (parenthesized_expression "((int)uVar21 < 1)" (( "(") (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00163fac;" (goto "goto") (statement_identifier "LAB_00163fac") (; ";"))) (} "}"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar21)" (( "(") (binary_expression "0 < (int)uVar21" (number_literal "0") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (; ";")) (labeled_statement "LAB_00163fac:\n      iVar19 = *(int *)(param_1 + 0x2a8);" (statement_identifier "LAB_00163fac") (: ":") (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 8) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 8) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 8) * 8" (pointer_expression "*(int *)(iVar19 + 8)" (* "*") (cast_expression "(int *)(iVar19 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 8)" (( "(") (binary_expression "iVar19 + 8" (identifier "iVar19") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (NAN(dVar3)) {\n        local_84 = 0;\n      }\n      else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(NAN(dVar3))" (( "(") (call_expression "NAN(dVar3)" (identifier "NAN") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")"))) () ")")) (compound_statement "{\n        local_84 = 0;\n      }" ({ "{") (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" (else "else") (compound_statement "{\nLAB_00163fd8:\n        local_84 = 0;\n        if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }\n      }" ({ "{") (labeled_statement "LAB_00163fd8:\n        local_84 = 0;" (statement_identifier "LAB_00163fd8") (: ":") (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (0.0 < dVar3) {\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (compound_statement "{\n          fVar1 = (float)CONCAT44(iStack_78,local_7c);\n          if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }\n          local_84 = -1;\n          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n          if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }\n        }" ({ "{") (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" (identifier "fVar1") (= "=") (cast_expression "(float)CONCAT44(iStack_78,local_7c)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(iStack_78,local_7c)" (identifier "CONCAT44") (argument_list "(iStack_78,local_7c)" (( "(") (identifier "iStack_78") (, ",") (identifier "local_7c") () ")"))))) (; ";")) (if_statement "if (iStack_78 < 0) {\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" (if "if") (parenthesized_expression "(iStack_78 < 0)" (( "(") (binary_expression "iStack_78 < 0" (identifier "iStack_78") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            fVar1 = fVar1 + DAT_002df8b0;\n          }" ({ "{") (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" (identifier "fVar1") (= "=") (binary_expression "fVar1 + DAT_002df8b0" (identifier "fVar1") (+ "+") (identifier "DAT_002df8b0"))) (; ";")) (} "}"))) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" (identifier "local_84") (= "=") (number_literal "-1")) (; ";")) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" (( "(") (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar1")) (* "*") (identifier "dVar3")) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n            dVar3 = dVar3 + (double)DAT_002df2b8;\n            if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }\n          }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }\n            else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n            }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")"))))) (; ";")) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (identifier "local_84") (= "=") (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (identifier "CONCAT44") (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (( "(") (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (number_literal "-0x80000000")) (, ",") (cast_expression "(int)lVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar2")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              local_84 = (longlong)ROUND(dVar3);\n            }" (else "else") (compound_statement "{\n              local_84 = (longlong)ROUND(dVar3);\n            }" ({ "{") (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" (identifier "local_84") (= "=") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")"))))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (} "}")))) (if_statement "if (uVar20 == 0) {\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_2[0x14] = 8;\n        uVar20 = 8;\n      }" ({ "{") (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (} "}"))) (} "}")))) (if_statement "if (0 < (int)uVar18) {\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }" (if "if") (parenthesized_expression "(0 < (int)uVar18)" (( "(") (binary_expression "0 < (int)uVar18" (number_literal "0") (< "<") (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18"))) () ")")) (compound_statement "{\n      do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);\nLAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);\n      uVar18 = *param_2;\n    }" ({ "{") (do_statement "do {\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      } while (0 < (int)uVar21);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }\n        uVar20 = param_2[0x14];\n      }" ({ "{") (while_statement "while( true ) {\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar12 = uVar18;\n          if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }\n          uVar21 = uVar18 - uVar12;\n          uVar18 = 0;\n          if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }\n          if (uVar20 == 8) {\n            *param_6 = 0;\n          }\n          uVar20 = uVar20 - uVar12;\n          bVar15 = (byte)uVar18 & 0x1f;\n          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n          if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }\n          param_2[0x14] = uVar20;\n          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n          if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }\n          *param_6 = *param_6 | bVar15;\n          if (uVar20 != 0) break;\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n          uVar20 = 8;\n          if ((int)uVar21 < 1) goto LAB_00164174;\n        }" ({ "{") (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (uVar20 <= uVar18) {\n            uVar12 = uVar20;\n          }" (if "if") (parenthesized_expression "(uVar20 <= uVar18)" (( "(") (binary_expression "uVar20 <= uVar18" (identifier "uVar20") (<= "<=") (identifier "uVar18")) () ")")) (compound_statement "{\n            uVar12 = uVar20;\n          }" ({ "{") (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" (identifier "uVar12") (= "=") (identifier "uVar20")) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" (identifier "uVar21") (= "=") (binary_expression "uVar18 - uVar12" (identifier "uVar18") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (int)uVar21) {\n            uVar18 = uVar21;\n          }" (if "if") (parenthesized_expression "(-1 < (int)uVar21)" (( "(") (binary_expression "-1 < (int)uVar21" (number_literal "-1") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n            uVar18 = uVar21;\n          }" ({ "{") (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" (identifier "uVar18") (= "=") (identifier "uVar21")) (; ";")) (} "}"))) (if_statement "if (uVar20 == 8) {\n            *param_6 = 0;\n          }" (if "if") (parenthesized_expression "(uVar20 == 8)" (( "(") (binary_expression "uVar20 == 8" (identifier "uVar20") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n            *param_6 = 0;\n          }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" (identifier "uVar20") (= "=") (binary_expression "uVar20 - uVar12" (identifier "uVar20") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (identifier "uVar10") (= "=") (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_84")) (>> ">>") (identifier "bVar15")) (| "|") (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (<< "<<") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar18 & 0x20) != 0) {\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" (if "if") (parenthesized_expression "((uVar18 & 0x20) != 0)" (( "(") (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" (( "(") (binary_expression "uVar18 & 0x20" (identifier "uVar18") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n          }" ({ "{") (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (>> ">>") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (identifier "bVar15") (= "=") (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (( "(") (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" (( "(") (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar12 & 0x1f)" (number_literal "-1") (<< "<<") (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")) () ")"))) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n            bVar15 = 0;\n          }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            bVar15 = 0;\n          }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (| "|") (identifier "bVar15"))) (; ";")) (if_statement "if (uVar20 != 0) break;" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (if_statement "if ((int)uVar21 < 1) goto LAB_00164174;" (if "if") (parenthesized_expression "((int)uVar21 < 1)" (( "(") (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00164174;" (goto "goto") (statement_identifier "LAB_00164174") (; ";"))) (} "}"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar21)" (( "(") (binary_expression "0 < (int)uVar21" (number_literal "0") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (; ";")) (labeled_statement "LAB_00164174:\n      iVar19 = *(int *)(param_1 + 0x2a8);" (statement_identifier "LAB_00164174") (: ":") (expression_statement "iVar19 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar19 = *(int *)(param_1 + 0x2a8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar19 + 0x34) == 0) {\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }\n    else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar19 + 0x34) == 0)" (( "(") (binary_expression "*(int *)(iVar19 + 0x34) == 0" (pointer_expression "*(int *)(iVar19 + 0x34)" (* "*") (cast_expression "(int *)(iVar19 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x34)" (( "(") (binary_expression "iVar19 + 0x34" (identifier "iVar19") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      dVar3 = (double)DAT_002df8a8;\nLAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);\n      if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }\n      local_84 = -1;\n      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;\n      if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }\n    }" ({ "{") (expression_statement "dVar3 = (double)DAT_002df8a8;" (assignment_expression "dVar3 = (double)DAT_002df8a8" (identifier "dVar3") (= "=") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8"))) (; ";")) (labeled_statement "LAB_00164302:\n      fVar1 = (float)CONCAT44(iStack_78,local_7c);" (statement_identifier "LAB_00164302") (: ":") (expression_statement "fVar1 = (float)CONCAT44(iStack_78,local_7c);" (assignment_expression "fVar1 = (float)CONCAT44(iStack_78,local_7c)" (identifier "fVar1") (= "=") (cast_expression "(float)CONCAT44(iStack_78,local_7c)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(iStack_78,local_7c)" (identifier "CONCAT44") (argument_list "(iStack_78,local_7c)" (( "(") (identifier "iStack_78") (, ",") (identifier "local_7c") () ")"))))) (; ";"))) (if_statement "if (iStack_78 < 0) {\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" (if "if") (parenthesized_expression "(iStack_78 < 0)" (( "(") (binary_expression "iStack_78 < 0" (identifier "iStack_78") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        fVar1 = fVar1 + DAT_002df8b0;\n      }" ({ "{") (expression_statement "fVar1 = fVar1 + DAT_002df8b0;" (assignment_expression "fVar1 = fVar1 + DAT_002df8b0" (identifier "fVar1") (= "=") (binary_expression "fVar1 + DAT_002df8b0" (identifier "fVar1") (+ "+") (identifier "DAT_002df8b0"))) (; ";")) (} "}"))) (expression_statement "local_84 = -1;" (assignment_expression "local_84 = -1" (identifier "local_84") (= "=") (number_literal "-1")) (; ";")) (expression_statement "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;" (assignment_expression "dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8" (identifier "dVar3") (= "=") (binary_expression "((double)fVar1 * dVar3) / (double)DAT_002df8a8" (parenthesized_expression "((double)fVar1 * dVar3)" (( "(") (binary_expression "(double)fVar1 * dVar3" (cast_expression "(double)fVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar1")) (* "*") (identifier "dVar3")) () ")")) (/ "/") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (dVar3 < (double)DAT_002df8b0) {\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" (if "if") (parenthesized_expression "(dVar3 < (double)DAT_002df8b0)" (( "(") (binary_expression "dVar3 < (double)DAT_002df8b0" (identifier "dVar3") (< "<") (cast_expression "(double)DAT_002df8b0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b0"))) () ")")) (compound_statement "{\n        dVar3 = dVar3 + (double)DAT_002df2b8;\n        if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }\n      }" ({ "{") (expression_statement "dVar3 = dVar3 + (double)DAT_002df2b8;" (assignment_expression "dVar3 = dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (= "=") (binary_expression "dVar3 + (double)DAT_002df2b8" (identifier "dVar3") (+ "+") (cast_expression "(double)DAT_002df2b8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2b8")))) (; ";")) (if_statement "if ((double)DAT_002df2c8 <= dVar3) {\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }\n        else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" (if "if") (parenthesized_expression "((double)DAT_002df2c8 <= dVar3)" (( "(") (binary_expression "(double)DAT_002df2c8 <= dVar3" (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8")) (<= "<=") (identifier "dVar3")) () ")")) (compound_statement "{\n          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);\n          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);\n        }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);" (assignment_expression "lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar3 - (double)DAT_002df2c8)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 - (double)DAT_002df2c8)" (identifier "ROUND") (argument_list "(dVar3 - (double)DAT_002df2c8)" (( "(") (binary_expression "dVar3 - (double)DAT_002df2c8" (identifier "dVar3") (- "-") (cast_expression "(double)DAT_002df2c8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df2c8"))) () ")"))))) (; ";")) (expression_statement "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);" (assignment_expression "local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (identifier "local_84") (= "=") (call_expression "CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (identifier "CONCAT44") (argument_list "((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2)" (( "(") (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + -0x80000000" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (number_literal "-0x80000000")) (, ",") (cast_expression "(int)lVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar2")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          local_84 = (longlong)ROUND(dVar3);\n        }" (else "else") (compound_statement "{\n          local_84 = (longlong)ROUND(dVar3);\n        }" ({ "{") (expression_statement "local_84 = (longlong)ROUND(dVar3);" (assignment_expression "local_84 = (longlong)ROUND(dVar3)" (identifier "local_84") (= "=") (cast_expression "(longlong)ROUND(dVar3)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3)" (identifier "ROUND") (argument_list "(dVar3)" (( "(") (identifier "dVar3") () ")"))))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" (else "else") (compound_statement "{\n      local_84 = 0;\n      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);\n      if (0.0 < dVar3) goto LAB_00164302;\n    }" ({ "{") (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);" (assignment_expression "dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(iVar19 + 0x38) * 8)" (( "(") (binary_expression "param_5 + *(int *)(iVar19 + 0x38) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(iVar19 + 0x38) * 8" (pointer_expression "*(int *)(iVar19 + 0x38)" (* "*") (cast_expression "(int *)(iVar19 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x38)" (( "(") (binary_expression "iVar19 + 0x38" (identifier "iVar19") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar3) goto LAB_00164302;" (if "if") (parenthesized_expression "(0.0 < dVar3)" (( "(") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3")) () ")")) (goto_statement "goto LAB_00164302;" (goto "goto") (statement_identifier "LAB_00164302") (; ";"))) (} "}")))) (if_statement "if (uVar20 == 0) {\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_2[0x14] = 8;\n      uVar20 = 8;\n    }" ({ "{") (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar20 = 8;" (assignment_expression "uVar20 = 8" (identifier "uVar20") (= "=") (number_literal "8")) (; ";")) (} "}"))) (if_statement "if (0 < (int)uVar18) {\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }" (if "if") (parenthesized_expression "(0 < (int)uVar18)" (( "(") (binary_expression "0 < (int)uVar18" (number_literal "0") (< "<") (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18"))) () ")")) (compound_statement "{\n      while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }\n    }" ({ "{") (while_statement "while( true ) {\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        uVar12 = uVar20;\n        if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }\n        uVar21 = uVar18 - uVar12;\n        uVar18 = 0;\n        if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }\n        if (uVar20 == 8) {\n          *param_6 = 0;\n        }\n        uVar20 = uVar20 - uVar12;\n        param_2[0x14] = uVar20;\n        bVar15 = (byte)uVar18 & 0x1f;\n        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;\n        if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }\n        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));\n        if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }\n        *param_6 = *param_6 | bVar15;\n        if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }\n        if ((int)uVar21 < 1) break;\n        uVar20 = param_2[0x14];\n      }" ({ "{") (expression_statement "uVar12 = uVar20;" (assignment_expression "uVar12 = uVar20" (identifier "uVar12") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar18 <= uVar20) {\n          uVar12 = uVar18;\n        }" (if "if") (parenthesized_expression "(uVar18 <= uVar20)" (( "(") (binary_expression "uVar18 <= uVar20" (identifier "uVar18") (<= "<=") (identifier "uVar20")) () ")")) (compound_statement "{\n          uVar12 = uVar18;\n        }" ({ "{") (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar18 - uVar12;" (assignment_expression "uVar21 = uVar18 - uVar12" (identifier "uVar21") (= "=") (binary_expression "uVar18 - uVar12" (identifier "uVar18") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (int)uVar21) {\n          uVar18 = uVar21;\n        }" (if "if") (parenthesized_expression "(-1 < (int)uVar21)" (( "(") (binary_expression "-1 < (int)uVar21" (number_literal "-1") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n          uVar18 = uVar21;\n        }" ({ "{") (expression_statement "uVar18 = uVar21;" (assignment_expression "uVar18 = uVar21" (identifier "uVar18") (= "=") (identifier "uVar21")) (; ";")) (} "}"))) (if_statement "if (uVar20 == 8) {\n          *param_6 = 0;\n        }" (if "if") (parenthesized_expression "(uVar20 == 8)" (( "(") (binary_expression "uVar20 == 8" (identifier "uVar20") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n          *param_6 = 0;\n        }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 - uVar12;" (assignment_expression "uVar20 = uVar20 - uVar12" (identifier "uVar20") (= "=") (binary_expression "uVar20 - uVar12" (identifier "uVar20") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "param_2[0x14] = uVar20;" (assignment_expression "param_2[0x14] = uVar20" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "bVar15 = (byte)uVar18 & 0x1f;" (assignment_expression "bVar15 = (byte)uVar18 & 0x1f" (identifier "bVar15") (= "=") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;" (assignment_expression "uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (identifier "uVar10") (= "=") (binary_expression "(uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15" (binary_expression "(uint)local_84 >> bVar15" (cast_expression "(uint)local_84" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_84")) (>> ">>") (identifier "bVar15")) (| "|") (binary_expression "local_84._4_4_ << 0x20 - bVar15" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (<< "<<") (binary_expression "0x20 - bVar15" (number_literal "0x20") (- "-") (identifier "bVar15"))))) (; ";")) (if_statement "if ((uVar18 & 0x20) != 0) {\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }" (if "if") (parenthesized_expression "((uVar18 & 0x20) != 0)" (( "(") (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" (( "(") (binary_expression "uVar18 & 0x20" (identifier "uVar18") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);\n        }" ({ "{") (expression_statement "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);" (assignment_expression "uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "local_84._4_4_ >> ((byte)uVar18 & 0x1f)" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (>> ">>") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));" (assignment_expression "bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (identifier "bVar15") (= "=") (call_expression "(byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f))" (( "(") (binary_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f)" (parenthesized_expression "(~(-1 << ((byte)uVar12 & 0x1f)) & uVar10)" (( "(") (binary_expression "~(-1 << ((byte)uVar12 & 0x1f)) & uVar10" (unary_expression "~(-1 << ((byte)uVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar12 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar12 & 0x1f)" (number_literal "-1") (<< "<<") (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")) () ")"))) () ")"))) (& "&") (identifier "uVar10")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n          bVar15 = 0;\n        }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          bVar15 = 0;\n        }" ({ "{") (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_6 = *param_6 | bVar15;" (assignment_expression "*param_6 = *param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 | bVar15" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (| "|") (identifier "bVar15"))) (; ";")) (if_statement "if (uVar20 == 0) {\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }" (if "if") (parenthesized_expression "(uVar20 == 0)" (( "(") (binary_expression "uVar20 == 0" (identifier "uVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          param_6 = param_6 + 1;\n          param_2[0x14] = 8;\n        }" ({ "{") (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = 8;" (assignment_expression "param_2[0x14] = 8" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "8")) (; ";")) (} "}"))) (if_statement "if ((int)uVar21 < 1) break;" (if "if") (parenthesized_expression "((int)uVar21 < 1)" (( "(") (binary_expression "(int)uVar21 < 1" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar20 = param_2[0x14];" (assignment_expression "uVar20 = param_2[0x14]" (identifier "uVar20") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_6c = local_6c + 1;" (assignment_expression "local_6c = local_6c + 1" (identifier "local_6c") (= "=") (binary_expression "local_6c + 1" (identifier "local_6c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_5 = param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (= "=") (binary_expression "param_5 + *(int *)(param_1 + 0x298) * 8" (identifier "param_5") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[9];" (assignment_expression "param_6 = param_6 + param_2[9]" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[9]" (identifier "param_6") (+ "+") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")))) (; ";")) (if_statement "if (local_6c == param_3) {\n      return;\n    }" (if "if") (parenthesized_expression "(local_6c == param_3)" (( "(") (binary_expression "local_6c == param_3" (identifier "local_6c") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar18 = *param_2;" (assignment_expression "uVar18 = *param_2" (identifier "uVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

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

void __regparm2
function_1(type_1 *image,type_2 *quantum_info,type_3 number_pixels,type_4 *var_12,
                 type_5 *var_11,type_6 *var_1)

{
  float var_19;
  type_7 lVar2;
  double var_13;
  float var_40;
  double var_41;
  char var_28;
  char var_30;
  type_5 uVar8;
  type_5 uVar9;
  type_8 var_6;
  type_8 uVar11;
  type_8 var_8;
  type_9 var_47;
  type_9 var_29;
  ssize_t sVar15;
  type_10 var_44;
  int var_17;
  type_5 uVar18;
  type_11 *pPVar19;
  type_10 var_35;
  type_5 uVar21;
  type_5 uVar22;
  type_5 uVar23;
  type_9 var_3;
  size_t var_26;
  int var_15;
  type_9 var_18;
  type_9 var_27;
  float fVar29;
  type_9 var_10;
  type_5 local_ac;
  type_5 local_a4;
  int var_32;
  type_5 local_94;
  type_5 local_8c;
  type_12 local_84;
  int local_7c;
  int var_46;
  type_9 var_31;
  int var_48;
  type_9 var_37;
  type_9 var_36;
  type_9 var_34;
  type_9 var_38;
  type_9 var_25;
  
  var_41 = var_42;
  var_19 = var_21;
  var_13 = _DAT_002df2e0;
  if (var_1 == (type_6 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,
                  "ExportBGRAQuantum");
  }
  if (var_1->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_2("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,
                  "ExportBGRAQuantum");
  }
  var_3 = quantum_info->depth;
  if (var_3 == 0x10) {
    if (quantum_info->format == var_4) {
      if ((int)number_pixels < 1) {
        return;
      }
      var_10 = 0;
      do {
        var_6 = var_5
                           ((float)((type_13)var_13 * (type_13)var_12[image->channel_map[2].offset])
                           );
        var_8 = var_6 >> 8;
        uVar11 = var_6;
        if (quantum_info->endian == var_7) {
          uVar11 = var_8;
          var_8 = var_6;
        }
        *var_11 = (type_5)var_8;
        var_11[1] = (type_5)uVar11;
        var_41 = _DAT_002df2e0;
        var_6 = var_5
                           ((float)((type_13)var_12[image->channel_map[1].offset] *
                                   (type_13)_DAT_002df2e0));
        var_8 = var_6 >> 8;
        uVar11 = var_6;
        if (quantum_info->endian == var_7) {
          uVar11 = var_8;
          var_8 = var_6;
        }
        var_11[2] = (type_5)var_8;
        var_11[3] = (type_5)uVar11;
        var_8 = var_5
                           ((float)((type_13)var_41 * (type_13)var_12[image->channel_map->offset]));
        uVar21 = (type_5)(var_8 >> 8);
        if (quantum_info->endian == var_7) {
          uVar21 = (type_5)var_8;
          var_8 = var_8 >> 8;
        }
        var_11[4] = uVar21;
        var_11[5] = (type_5)var_8;
        if (image->channel_map[4].traits == var_9) {
          var_19 = 1.0;
        }
        else {
          var_19 = (float)((type_13)_DAT_002df2e0 * (type_13)var_12[image->channel_map[4].offset]);
        }
        var_8 = var_5(var_19);
        uVar21 = (type_5)(var_8 >> 8);
        if (quantum_info->endian == var_7) {
          uVar21 = (type_5)var_8;
          var_8 = var_8 >> 8;
        }
        var_10 = var_10 + 1;
        var_11[6] = uVar21;
        var_11[7] = (type_5)var_8;
        var_11 = var_11 + quantum_info->pad + 8;
        var_12 = var_12 + image->number_channels;
      } while (var_10 != (int)number_pixels);
      return;
    }
    if ((int)number_pixels < 1) {
      return;
    }
    var_10 = 0;
    do {
      var_13 = var_12[image->channel_map[2].offset];
      if (var_13 <= 0.0) {
        var_15 = 0;
        uVar21 = '\0';
      }
      else if ((double)var_21 <= var_13) {
        var_15 = -1;
        uVar21 = 0xff;
      }
      else {
        var_15 = (int)var_14(var_13 + (double)var_23);
        uVar21 = (type_5)((type_9)var_15 >> 8);
      }
      uVar18 = uVar21;
      uVar9 = (type_5)var_15;
      if (quantum_info->endian != var_7) {
        uVar18 = (type_5)var_15;
        uVar9 = uVar21;
      }
      var_11[1] = uVar18;
      *var_11 = uVar9;
      var_13 = var_12[image->channel_map[1].offset];
      if (var_13 <= 0.0) {
        var_15 = 0;
        uVar21 = '\0';
      }
      else if ((double)var_21 <= var_13) {
        var_15 = -1;
        uVar21 = 0xff;
      }
      else {
        var_15 = (int)var_14(var_13 + (double)var_23);
        uVar21 = (type_5)((type_9)var_15 >> 8);
      }
      uVar18 = (type_5)var_15;
      if (quantum_info->endian == var_7) {
        uVar18 = uVar21;
        uVar21 = (type_5)var_15;
      }
      var_11[3] = uVar18;
      var_11[2] = uVar21;
      var_13 = var_12[image->channel_map->offset];
      if (var_13 <= 0.0) {
        var_15 = 0;
        uVar21 = '\0';
      }
      else if ((double)var_21 <= var_13) {
        var_15 = -1;
        uVar21 = 0xff;
      }
      else {
        var_15 = (int)var_14(var_13 + (double)var_23);
        uVar21 = (type_5)((type_9)var_15 >> 8);
      }
      uVar18 = (type_5)var_15;
      if (quantum_info->endian == var_7) {
        uVar18 = uVar21;
        uVar21 = (type_5)var_15;
      }
      var_11[5] = uVar18;
      var_11[4] = uVar21;
      if (image->channel_map[4].traits == var_9) {
LAB_00164f80:
        var_15 = -1;
        local_ac = 0xff;
      }
      else {
        var_13 = var_12[image->channel_map[4].offset];
        if (var_13 <= 0.0) {
          var_15 = 0;
          local_ac = '\0';
        }
        else {
          if ((double)var_21 <= var_13) goto LAB_00164f80;
          var_15 = (int)var_14(var_13 + (double)var_23);
          local_ac = (type_5)((type_9)var_15 >> 8);
        }
      }
      uVar21 = (type_5)var_15;
      if (quantum_info->endian == var_7) {
        uVar21 = local_ac;
        local_ac = (type_5)var_15;
      }
      var_11[7] = uVar21;
      var_10 = var_10 + 1;
      var_11[6] = local_ac;
      var_11 = var_11 + quantum_info->pad + 8;
      var_12 = var_12 + image->number_channels;
      if (var_10 == (int)number_pixels) {
        return;
      }
    } while( true );
  }
  if (var_3 < 0x11) {
    if (var_3 == 8) {
      if ((int)number_pixels < 1) {
        return;
      }
      var_15 = 0;
      do {
        uVar21 = '\0';
        if (0.0 < var_12[image->channel_map[2].offset]) {
          var_13 = var_12[image->channel_map[2].offset] / (double)DAT_002e814c;
          uVar21 = 0xff;
          if (var_13 < (double)DAT_002e8150) {
            uVar21 = (type_5)(short)var_14(var_13 + (double)var_23);
          }
        }
        *var_11 = uVar21;
        uVar21 = '\0';
        if (0.0 < var_12[image->channel_map[1].offset]) {
          var_13 = var_12[image->channel_map[1].offset] / (double)DAT_002e814c;
          uVar21 = 0xff;
          if (var_13 < (double)DAT_002e8150) {
            uVar21 = (type_5)(short)var_14(var_13 + (double)var_23);
          }
        }
        var_11[1] = uVar21;
        uVar21 = '\0';
        if (0.0 < var_12[image->channel_map->offset]) {
          var_13 = var_12[image->channel_map->offset] / (double)DAT_002e814c;
          uVar21 = 0xff;
          if (var_13 < (double)DAT_002e8150) {
            uVar21 = (type_5)(short)var_14(var_13 + (double)var_23);
          }
        }
        var_11[2] = uVar21;
        uVar21 = 0xff;
        if (image->channel_map[4].traits != var_9) {
          uVar21 = '\0';
          if (0.0 < var_12[image->channel_map[4].offset]) {
            var_13 = var_12[image->channel_map[4].offset] / (double)DAT_002e814c;
            if ((double)DAT_002e8150 <= var_13) {
              uVar21 = 0xff;
            }
            else {
              uVar21 = (type_5)(short)var_14(var_13 + (double)var_23);
            }
          }
        }
        var_11[3] = uVar21;
        var_15 = var_15 + 1;
        var_12 = var_12 + image->number_channels;
        var_11 = var_11 + quantum_info->pad + 4;
      } while (var_15 != (int)number_pixels);
      return;
    }
    if (var_3 == 10) {
      if (quantum_info->pack == var_16) {
        if ((int)number_pixels < 1) {
          return;
        }
        var_3 = 0;
        var_15 = 0;
        do {
          var_17 = 0;
          do {
            pPVar19 = image->channel_map;
            if (var_17 == 2) {
              sVar15 = pPVar19[2].offset;
LAB_001644de:
              var_19 = (float)((type_7)var_14(var_12[sVar15]) & 0xffffffff);
            }
            else if (var_17 == 3) {
              var_19 = var_21;
              if (pPVar19[4].traits != var_9) {
                sVar15 = pPVar19[4].offset;
                goto LAB_001644de;
              }
            }
            else {
              if (var_17 == 1) {
                sVar15 = pPVar19[1].offset;
              }
              else {
                sVar15 = pPVar19->offset;
              }
              var_19 = (float)((type_7)var_14(var_12[sVar15]) & 0xffffffff);
            }
            var_18 = (type_9)(var_17 + var_15) % 3;
            if (var_18 == 1) {
              if (0.0 < var_19) {
                var_19 = (var_19 * var_20) / var_21;
                if (var_22 <= var_19) {
                  var_3 = 0xfffff000;
                }
                else {
                  var_19 = var_19 + var_23;
                  if (var_24 <= var_19) {
                    var_25 = (type_9)(type_7)var_14(var_19 - var_24);
                  }
                  else {
                    var_25 = (type_9)(type_7)var_14(var_19);
                  }
                  var_3 = var_3 | var_25 << 0xc;
                }
              }
            }
            else if (var_18 == 2) {
              if (0.0 < var_19) {
                var_19 = (var_19 * var_20) / var_21;
                if (var_22 <= var_19) {
                  var_3 = 0xfffffffc;
                }
                else {
                  var_19 = var_19 + var_23;
                  if (var_24 <= var_19) {
                    var_25 = (type_9)(type_7)var_14(var_19 - var_24);
                  }
                  else {
                    var_25 = (type_9)(type_7)var_14(var_19);
                  }
                  var_3 = var_3 | var_25 << 2;
                }
              }
              uVar18 = (type_5)(var_3 >> 8);
              uVar21 = (type_5)(var_3 >> 0x10);
              local_a4 = (type_5)(var_3 >> 0x18);
              if (quantum_info->endian == var_7) {
                *var_11 = (type_5)var_3;
                var_3 = 0;
                var_11[2] = uVar21;
                var_11[1] = uVar18;
                var_11[3] = local_a4;
                var_11 = var_11 + 4;
              }
              else {
                var_11[3] = (type_5)var_3;
                var_3 = 0;
                var_11[2] = uVar18;
                *var_11 = local_a4;
                var_11[1] = uVar21;
                var_11 = var_11 + 4;
              }
            }
            else if (0.0 < var_19) {
              var_19 = (var_19 * var_20) / var_21;
              if (var_22 <= var_19) {
                var_3 = var_3 | 0xffc00000;
              }
              else {
                var_19 = var_19 + var_23;
                if (var_24 <= var_19) {
                  var_25 = (type_9)(type_7)var_14(var_19 - var_24);
                }
                else {
                  var_25 = (type_9)(type_7)var_14(var_19);
                }
                var_3 = var_3 | var_25 << 0x16;
              }
            }
            var_17 = var_17 + 1;
          } while (var_17 != 4);
          var_15 = var_15 + 4;
          var_12 = var_12 + image->number_channels;
          var_11 = var_11 + quantum_info->pad;
          if ((int)number_pixels << 2 == var_15) {
            return;
          }
        } while( true );
      }
      if (quantum_info->quantum == 0x20) {
        if ((int)number_pixels < 1) {
          return;
        }
        var_26 = (quantum_info->state).bits;
        var_32 = 0;
        var_31 = 10;
        while( true ) {
          var_10 = 0;
          pPVar19 = image->channel_map;
          if (0.0 < var_12[pPVar19->offset]) {
            var_10 = 0xffffffff;
            var_13 = (var_12[pPVar19->offset] * (double)var_20) / (double)var_21;
            if (var_13 < (double)var_22) {
              var_13 = var_13 + (double)var_23;
              if ((double)var_24 <= var_13) {
                var_25 = (type_9)(type_7)var_14(var_13 - (double)var_24);
                var_10 = var_25;
              }
              else {
                var_25 = (type_9)(type_7)var_14(var_13);
                var_10 = var_25;
              }
            }
          }
          if (var_26 == 0) {
            (quantum_info->state).bits = 0x20;
            var_26 = 0x20;
          }
          if (0 < (int)var_31) {
            var_3 = (quantum_info->state).pixel;
            var_18 = var_31;
            do {
              var_27 = var_26;
              if (var_18 <= var_26) {
                var_27 = var_18;
              }
              var_28 = (char)var_18;
              var_18 = var_18 - var_27;
              var_29 = (quantum_info->state).mask[var_27];
              var_30 = (char)var_26;
              var_26 = var_26 - var_27;
              (quantum_info->state).bits = var_26;
              var_3 = var_3 | (var_10 >> ((char)var_31 - var_28 & 0x1fU) & var_29) <<
                                (0x20U - var_30 & 0x1f);
              (quantum_info->state).pixel = var_3;
              if (var_26 == 0) {
                uVar21 = (type_5)(var_3 >> 0x18);
                local_ac = (type_5)(var_3 >> 0x10);
                local_a4 = (type_5)(var_3 >> 8);
                if (quantum_info->endian == var_7) {
                  *var_11 = (type_5)var_3;
                  var_11[3] = uVar21;
                  var_11[1] = local_a4;
                  var_11[2] = local_ac;
                }
                else {
                  *var_11 = uVar21;
                  var_11[1] = local_ac;
                  var_11[2] = local_a4;
                  var_11[3] = (type_5)var_3;
                }
                var_31 = quantum_info->depth;
                (quantum_info->state).pixel = 0;
                var_3 = 0;
                (quantum_info->state).bits = 0x20;
                var_26 = 0x20;
                var_11 = var_11 + 4;
              }
            } while (0 < (int)var_18);
            pPVar19 = image->channel_map;
          }
          var_10 = 0;
          if (0.0 < var_12[pPVar19[1].offset]) {
            var_10 = 0xffffffff;
            var_13 = (var_12[pPVar19[1].offset] * (double)var_20) / (double)var_21;
            if (var_13 < (double)var_22) {
              var_13 = var_13 + (double)var_23;
              if ((double)var_24 <= var_13) {
                var_25 = (type_9)(type_7)var_14(var_13 - (double)var_24);
                var_10 = var_25;
              }
              else {
                var_25 = (type_9)(type_7)var_14(var_13);
                var_10 = var_25;
              }
            }
          }
          if (0 < (int)var_31) {
            var_3 = (quantum_info->state).pixel;
            var_18 = var_31;
            do {
              var_27 = var_26;
              if (var_18 <= var_26) {
                var_27 = var_18;
              }
              var_28 = (char)var_18;
              var_18 = var_18 - var_27;
              var_29 = (quantum_info->state).mask[var_27];
              var_30 = (char)var_26;
              var_26 = var_26 - var_27;
              (quantum_info->state).bits = var_26;
              var_3 = var_3 | (var_10 >> ((char)var_31 - var_28 & 0x1fU) & var_29) <<
                                (0x20U - var_30 & 0x1f);
              (quantum_info->state).pixel = var_3;
              if (var_26 == 0) {
                uVar21 = (type_5)(var_3 >> 0x18);
                local_ac = (type_5)(var_3 >> 0x10);
                local_a4 = (type_5)(var_3 >> 8);
                if (quantum_info->endian == var_7) {
                  *var_11 = (type_5)var_3;
                  var_11[3] = uVar21;
                  var_11[1] = local_a4;
                  var_11[2] = local_ac;
                }
                else {
                  *var_11 = uVar21;
                  var_11[1] = local_ac;
                  var_11[2] = local_a4;
                  var_11[3] = (type_5)var_3;
                }
                var_31 = quantum_info->depth;
                (quantum_info->state).pixel = 0;
                var_3 = 0;
                (quantum_info->state).bits = 0x20;
                var_26 = 0x20;
                var_11 = var_11 + 4;
              }
            } while (0 < (int)var_18);
            pPVar19 = image->channel_map;
          }
          var_10 = 0;
          if (0.0 < var_12[pPVar19[2].offset]) {
            var_10 = 0xffffffff;
            var_13 = (var_12[pPVar19[2].offset] * (double)var_20) / (double)var_21;
            if (var_13 < (double)var_22) {
              var_13 = var_13 + (double)var_23;
              if ((double)var_24 <= var_13) {
                var_25 = (type_9)(type_7)var_14(var_13 - (double)var_24);
                var_10 = var_25;
              }
              else {
                var_25 = (type_9)(type_7)var_14(var_13);
                var_10 = var_25;
              }
            }
          }
          if (0 < (int)var_31) {
            var_3 = (quantum_info->state).pixel;
            var_18 = var_31;
            do {
              var_27 = var_26;
              if (var_18 <= var_26) {
                var_27 = var_18;
              }
              var_28 = (char)var_18;
              var_18 = var_18 - var_27;
              var_29 = (quantum_info->state).mask[var_27];
              var_30 = (char)var_26;
              var_26 = var_26 - var_27;
              (quantum_info->state).bits = var_26;
              var_3 = var_3 | (var_10 >> ((char)var_31 - var_28 & 0x1fU) & var_29) <<
                                (0x20U - var_30 & 0x1f);
              (quantum_info->state).pixel = var_3;
              if (var_26 == 0) {
                uVar21 = (type_5)(var_3 >> 0x18);
                local_ac = (type_5)(var_3 >> 0x10);
                local_a4 = (type_5)(var_3 >> 8);
                if (quantum_info->endian == var_7) {
                  *var_11 = (type_5)var_3;
                  var_11[3] = uVar21;
                  var_11[1] = local_a4;
                  var_11[2] = local_ac;
                }
                else {
                  *var_11 = uVar21;
                  var_11[1] = local_ac;
                  var_11[2] = local_a4;
                  var_11[3] = (type_5)var_3;
                }
                var_31 = quantum_info->depth;
                (quantum_info->state).pixel = 0;
                var_3 = 0;
                (quantum_info->state).bits = 0x20;
                var_26 = 0x20;
                var_11 = var_11 + 4;
              }
            } while (0 < (int)var_18);
            pPVar19 = image->channel_map;
          }
          var_10 = 0x3ff;
          if (pPVar19[4].traits != var_9) {
            var_10 = 0;
            if (0.0 < var_12[pPVar19[4].offset]) {
              var_13 = (var_12[pPVar19[4].offset] * (double)var_20) / (double)var_21;
              if (var_13 < (double)var_22) {
                var_13 = var_13 + (double)var_23;
                if ((double)var_24 <= var_13) {
                  var_25 = (type_9)(type_7)var_14(var_13 - (double)var_24);
                  var_10 = var_25;
                }
                else {
                  var_25 = (type_9)(type_7)var_14(var_13);
                  var_10 = var_25;
                }
              }
              else {
                var_10 = 0xffffffff;
              }
            }
          }
          if (0 < (int)var_31) {
            var_3 = (quantum_info->state).pixel;
            var_18 = var_31;
            while( true ) {
              var_27 = var_26;
              if (var_31 <= var_26) {
                var_27 = var_31;
              }
              var_28 = (char)var_31;
              var_31 = var_31 - var_27;
              var_29 = (quantum_info->state).mask[var_27];
              var_30 = (char)var_26;
              var_26 = var_26 - var_27;
              (quantum_info->state).bits = var_26;
              var_3 = var_3 | (var_10 >> ((char)var_18 - var_28 & 0x1fU) & var_29) <<
                                (0x20U - var_30 & 0x1f);
              (quantum_info->state).pixel = var_3;
              if (var_26 == 0) {
                uVar21 = (type_5)(var_3 >> 0x18);
                local_ac = (type_5)(var_3 >> 0x10);
                local_a4 = (type_5)(var_3 >> 8);
                if (quantum_info->endian == var_7) {
                  *var_11 = (type_5)var_3;
                  var_11[3] = uVar21;
                  var_11[1] = local_a4;
                  var_11[2] = local_ac;
                }
                else {
                  *var_11 = uVar21;
                  var_11[1] = local_ac;
                  var_11[2] = local_a4;
                  var_11[3] = (type_5)var_3;
                }
                (quantum_info->state).pixel = 0;
                var_3 = 0;
                var_26 = 0x20;
                (quantum_info->state).bits = 0x20;
                var_11 = var_11 + 4;
              }
              if ((int)var_31 < 1) break;
              var_18 = quantum_info->depth;
            }
          }
          var_32 = var_32 + 1;
          var_12 = var_12 + image->number_channels;
          var_11 = var_11 + quantum_info->pad;
          if (var_32 == (int)number_pixels) break;
          var_31 = quantum_info->depth;
        }
        return;
      }
      var_15 = 0;
      if ((int)number_pixels < 1) {
        return;
      }
      var_26 = 10;
      do {
        pPVar19 = image->channel_map;
        if (var_12[pPVar19->offset] <= 0.0) {
          var_34 = 0;
        }
        else {
          var_13 = (var_12[pPVar19->offset] * (double)var_20) / (double)var_21;
          if ((double)var_22 <= var_13) {
            var_34 = 0xffffffff;
          }
          else {
            var_13 = var_13 + (double)var_23;
            if ((double)var_24 <= var_13) {
              var_25 = (type_9)(type_7)var_14(var_13 - (double)var_24);
              var_34 = var_25;
            }
            else {
              var_25 = (type_9)(type_7)var_14(var_13);
              var_34 = var_25;
            }
          }
        }
        var_3 = (quantum_info->state).bits;
        if (var_3 == 0) {
          (quantum_info->state).bits = 8;
          var_3 = 8;
        }
        if ((int)var_26 < 1) {
          var_13 = var_12[pPVar19[1].offset];
          if (!var_33(var_13)) goto LAB_00165390;
          var_36 = 0;
        }
        else {
          do {
            while( true ) {
              var_18 = var_3;
              if (var_26 <= var_3) {
                var_18 = var_26;
              }
              var_27 = var_26 - var_18;
              var_26 = 0;
              if (-1 < (int)var_27) {
                var_26 = var_27;
              }
              if (var_3 == 8) {
                *var_11 = '\0';
              }
              var_3 = var_3 - var_18;
              var_35 = (type_10)var_26 & 0x1f;
              var_29 = var_34 >> var_35 | 0 << 0x20 - var_35;
              if ((var_26 & 0x20) != 0) {
                var_29 = 0 >> ((type_10)var_26 & 0x1f);
              }
              (quantum_info->state).bits = var_3;
              var_35 = (type_10)((~(-1 << ((type_10)var_18 & 0x1f)) & var_29) << ((type_10)var_3 & 0x1f));
              if ((var_3 & 0x20) != 0) {
                var_35 = 0;
              }
              *var_11 = *var_11 | var_35;
              if (var_3 != 0) break;
              var_11 = var_11 + 1;
              (quantum_info->state).bits = 8;
              var_3 = 8;
              if ((int)var_27 < 1) goto LAB_00165364;
            }
            var_3 = (quantum_info->state).bits;
          } while (0 < (int)var_27);
LAB_00165364:
          pPVar19 = image->channel_map;
          var_26 = quantum_info->depth;
          var_13 = var_12[pPVar19[1].offset];
          if (var_33(var_13)) {
LAB_00165e72:
            var_36 = 0;
          }
          else {
LAB_00165390:
            if (var_13 <= 0.0) goto LAB_00165e72;
            var_13 = (var_13 * (double)var_20) / (double)var_21;
            if ((double)var_22 <= var_13) {
              var_36 = 0xffffffff;
            }
            else {
              var_13 = var_13 + (double)var_23;
              if ((double)var_24 <= var_13) {
                var_25 = (type_9)(type_7)var_14(var_13 - (double)var_24);
                var_36 = var_25;
              }
              else {
                var_25 = (type_9)(type_7)var_14(var_13);
                var_36 = var_25;
              }
            }
          }
          if (var_3 == 0) {
            (quantum_info->state).bits = 8;
            var_3 = 8;
          }
        }
        if ((int)var_26 < 1) {
          var_13 = var_12[pPVar19[2].offset];
          if (!var_33(var_13)) goto LAB_00165520;
          var_37 = 0;
        }
        else {
          do {
            while( true ) {
              var_18 = var_3;
              if (var_26 <= var_3) {
                var_18 = var_26;
              }
              var_27 = var_26 - var_18;
              var_26 = 0;
              if (-1 < (int)var_27) {
                var_26 = var_27;
              }
              if (var_3 == 8) {
                *var_11 = '\0';
              }
              var_3 = var_3 - var_18;
              var_35 = (type_10)var_26 & 0x1f;
              var_29 = var_36 >> var_35 | 0 << 0x20 - var_35;
              if ((var_26 & 0x20) != 0) {
                var_29 = 0 >> ((type_10)var_26 & 0x1f);
              }
              (quantum_info->state).bits = var_3;
              var_35 = (type_10)((~(-1 << ((type_10)var_18 & 0x1f)) & var_29) << ((type_10)var_3 & 0x1f));
              if ((var_3 & 0x20) != 0) {
                var_35 = 0;
              }
              *var_11 = *var_11 | var_35;
              if (var_3 != 0) break;
              var_11 = var_11 + 1;
              (quantum_info->state).bits = 8;
              var_3 = 8;
              if ((int)var_27 < 1) goto LAB_001654f4;
            }
            var_3 = (quantum_info->state).bits;
          } while (0 < (int)var_27);
LAB_001654f4:
          pPVar19 = image->channel_map;
          var_26 = quantum_info->depth;
          var_13 = var_12[pPVar19[2].offset];
          if (var_33(var_13)) {
LAB_00165e52:
            var_37 = 0;
          }
          else {
LAB_00165520:
            if (var_13 <= 0.0) goto LAB_00165e52;
            var_13 = (var_13 * (double)var_20) / (double)var_21;
            if ((double)var_22 <= var_13) {
              var_37 = 0xffffffff;
            }
            else {
              var_13 = var_13 + (double)var_23;
              if ((double)var_24 <= var_13) {
                var_25 = (type_9)(type_7)var_14(var_13 - (double)var_24);
                var_37 = var_25;
              }
              else {
                var_25 = (type_9)(type_7)var_14(var_13);
                var_37 = var_25;
              }
            }
          }
          if (var_3 == 0) {
            (quantum_info->state).bits = 8;
            var_3 = 8;
          }
        }
        if (0 < (int)var_26) {
          do {
            while( true ) {
              var_18 = var_3;
              if (var_26 <= var_3) {
                var_18 = var_26;
              }
              var_27 = var_26 - var_18;
              var_26 = 0;
              if (-1 < (int)var_27) {
                var_26 = var_27;
              }
              if (var_3 == 8) {
                *var_11 = '\0';
              }
              var_3 = var_3 - var_18;
              var_35 = (type_10)var_26 & 0x1f;
              var_29 = var_37 >> var_35 | 0 << 0x20 - var_35;
              if ((var_26 & 0x20) != 0) {
                var_29 = 0 >> ((type_10)var_26 & 0x1f);
              }
              (quantum_info->state).bits = var_3;
              var_35 = (type_10)((~(-1 << ((type_10)var_18 & 0x1f)) & var_29) << ((type_10)var_3 & 0x1f));
              if ((var_3 & 0x20) != 0) {
                var_35 = 0;
              }
              *var_11 = *var_11 | var_35;
              if (var_3 != 0) break;
              var_11 = var_11 + 1;
              (quantum_info->state).bits = 8;
              var_3 = 8;
              if ((int)var_27 < 1) goto LAB_00165684;
            }
            var_3 = (quantum_info->state).bits;
          } while (0 < (int)var_27);
LAB_00165684:
          pPVar19 = image->channel_map;
          var_26 = quantum_info->depth;
        }
        if (pPVar19[4].traits == var_9) {
          var_38 = 0x3ff;
        }
        else if (var_12[pPVar19[4].offset] <= 0.0) {
          var_38 = 0;
        }
        else {
          var_13 = (var_12[pPVar19[4].offset] * (double)var_20) / (double)var_21;
          if (var_13 < (double)var_22) {
            var_13 = var_13 + (double)var_23;
            if ((double)var_24 <= var_13) {
              var_25 = (type_9)(type_7)var_14(var_13 - (double)var_24);
              var_38 = var_25;
            }
            else {
              var_25 = (type_9)(type_7)var_14(var_13);
              var_38 = var_25;
            }
          }
          else {
            var_38 = 0xffffffff;
          }
        }
        if (var_3 == 0) {
          (quantum_info->state).bits = 8;
          var_3 = 8;
        }
        if (0 < (int)var_26) {
          while( true ) {
            var_18 = var_3;
            if (var_26 <= var_3) {
              var_18 = var_26;
            }
            var_27 = var_26 - var_18;
            var_26 = 0;
            if (-1 < (int)var_27) {
              var_26 = var_27;
            }
            if (var_3 == 8) {
              *var_11 = 0;
            }
            var_3 = var_3 - var_18;
            (quantum_info->state).bits = var_3;
            var_35 = (type_10)var_26 & 0x1f;
            var_29 = var_38 >> var_35 | 0 << 0x20 - var_35;
            if ((var_26 & 0x20) != 0) {
              var_29 = 0 >> ((type_10)var_26 & 0x1f);
            }
            var_35 = (type_10)((~(-1 << ((type_10)var_18 & 0x1f)) & var_29) << ((type_10)var_3 & 0x1f));
            if ((var_3 & 0x20) != 0) {
              var_35 = 0;
            }
            *var_11 = *var_11 | var_35;
            if (var_3 == 0) {
              var_11 = var_11 + 1;
              (quantum_info->state).bits = 8;
            }
            if ((int)var_27 < 1) break;
            var_3 = (quantum_info->state).bits;
          }
        }
        var_15 = var_15 + 1;
        var_12 = var_12 + image->number_channels;
        var_11 = var_11 + quantum_info->pad;
        if (var_15 == (int)number_pixels) {
          return;
        }
        var_26 = quantum_info->depth;
      } while( true );
    }
LAB_001642d0:
    local_7c = 0;
    var_46 = 0;
    if (var_3 == 0) goto LAB_00163bfb;
  }
  else {
    if (var_3 == 0x20) {
      if (quantum_info->format == var_4) {
        if ((int)number_pixels < 1) {
          return;
        }
        var_10 = 0;
        do {
          var_40 = (float)var_12[image->channel_map->offset] * (float)(quantum_info->state).inverse_scale
                  + (float)quantum_info->minimum;
          uVar21 = (type_5)((type_9)var_40 >> 8);
          uVar9 = (type_5)((type_9)var_40 >> 0x10);
          uVar18 = (type_5)((type_9)var_40 >> 0x18);
          if (quantum_info->endian == var_7) {
            *var_11 = var_39(var_40,0);
            var_11[1] = uVar21;
            var_11[2] = uVar9;
            var_11[3] = uVar18;
          }
          else {
            var_11[1] = uVar9;
            *var_11 = uVar18;
            var_11[2] = uVar21;
            var_11[3] = var_39(var_40,0);
          }
          var_40 = (float)var_12[image->channel_map[1].offset] *
                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;
          uVar21 = (type_5)((type_9)var_40 >> 8);
          uVar9 = (type_5)((type_9)var_40 >> 0x10);
          uVar18 = (type_5)((type_9)var_40 >> 0x18);
          if (quantum_info->endian == var_7) {
            var_11[4] = var_39(var_40,0);
            var_11[6] = uVar9;
            var_11[5] = uVar21;
            var_11[7] = uVar18;
          }
          else {
            var_11[5] = uVar9;
            var_11[4] = uVar18;
            var_11[6] = uVar21;
            var_11[7] = var_39(var_40,0);
          }
          var_40 = (float)var_12[image->channel_map[2].offset] *
                  (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;
          uVar21 = (type_5)((type_9)var_40 >> 8);
          uVar18 = (type_5)((type_9)var_40 >> 0x18);
          uVar9 = (type_5)((type_9)var_40 >> 0x10);
          if (quantum_info->endian == var_7) {
            var_11[8] = var_39(var_40,0);
            var_11[10] = uVar9;
            var_11[9] = uVar21;
            var_11[0xb] = uVar18;
          }
          else {
            var_11[10] = uVar21;
            var_11[8] = uVar18;
            var_11[9] = uVar9;
            var_11[0xb] = var_39(var_40,0);
          }
          var_40 = var_19;
          if (image->channel_map[4].traits != var_9) {
            var_40 = (float)var_12[image->channel_map[4].offset];
          }
          var_40 = var_40 * (float)(quantum_info->state).inverse_scale + (float)quantum_info->minimum;
          uVar21 = (type_5)((type_9)var_40 >> 8);
          fVar29 = (float)((type_9)var_40 >> 0x18);
          uVar18 = (type_5)((type_9)var_40 >> 0x10);
          if (quantum_info->endian == var_7) {
            var_11[0xc] = var_39(var_40,0);
            var_11[0xe] = uVar18;
            var_11[0xd] = uVar21;
          }
          else {
            var_11[0xe] = uVar21;
            var_11[0xc] = (type_5)((type_9)var_40 >> 0x18);
            var_11[0xd] = uVar18;
            fVar29 = var_40;
          }
          var_11[0xf] = var_39(fVar29,0);
          var_10 = var_10 + 1;
          var_12 = var_12 + image->number_channels;
          var_11 = var_11 + quantum_info->pad + 0x10;
        } while (var_10 != (int)number_pixels);
        return;
      }
      if ((int)number_pixels < 1) {
        return;
      }
      var_10 = 0;
      do {
        if (var_12[image->channel_map[2].offset] <= 0.0) {
          uVar21 = '\0';
          var_25._0_1_ = '\0';
          uVar18 = '\0';
          uVar23 = '\0';
          uVar9 = '\0';
          uVar8 = '\0';
          if (quantum_info->endian == var_7) goto LAB_00164d14;
LAB_00164af3:
          var_11[1] = uVar9;
          *var_11 = uVar8;
          var_11[2] = uVar23;
          var_11[3] = (type_5)var_25;
        }
        else {
          var_13 = var_12[image->channel_map[2].offset] * (double)DAT_002e8148;
          if (var_41 <= var_13) {
            var_25._0_1_ = 0xff;
            uVar23 = 0xff;
            uVar9 = 0xff;
            uVar8 = 0xff;
          }
          else {
            lVar2 = (type_7)var_14(var_13 + (double)var_23);
            var_25._0_1_ = (type_5)lVar2;
            uVar8 = (type_5)((type_14)lVar2 >> 0x18);
            uVar9 = (type_5)((type_14)lVar2 >> 0x10);
            uVar23 = (type_5)((type_14)lVar2 >> 8);
          }
          uVar21 = (type_5)var_25;
          uVar18 = uVar23;
          if (quantum_info->endian != var_7) goto LAB_00164af3;
LAB_00164d14:
          *var_11 = uVar21;
          var_11[1] = uVar18;
          var_11[2] = uVar9;
          var_11[3] = uVar8;
        }
        if (var_12[image->channel_map[1].offset] <= 0.0) {
          uVar21 = '\0';
          var_25._0_1_ = '\0';
          uVar9 = '\0';
          uVar22 = '\0';
          uVar8 = '\0';
          uVar18 = '\0';
          uVar23 = '\0';
          if (quantum_info->endian == var_7) goto LAB_00164ce4;
LAB_00164b98:
          var_11[4] = uVar23;
          var_11[5] = uVar8;
          var_11[6] = uVar22;
          var_11[7] = (type_5)var_25;
        }
        else {
          var_13 = var_12[image->channel_map[1].offset] * (double)DAT_002e8148;
          if (var_42 <= var_13) {
            var_25._0_1_ = 0xff;
            uVar22 = 0xff;
            uVar8 = 0xff;
            uVar23 = 0xff;
          }
          else {
            lVar2 = (type_7)var_14(var_13 + (double)var_23);
            var_25._0_1_ = (type_5)lVar2;
            uVar22 = (type_5)((type_14)lVar2 >> 8);
            uVar23 = (type_5)((type_14)lVar2 >> 0x18);
            uVar8 = (type_5)((type_14)lVar2 >> 0x10);
          }
          uVar21 = (type_5)var_25;
          uVar18 = uVar23;
          uVar9 = uVar22;
          if (quantum_info->endian != var_7) goto LAB_00164b98;
LAB_00164ce4:
          var_11[4] = uVar21;
          var_11[5] = uVar9;
          var_11[6] = uVar8;
          var_11[7] = uVar18;
        }
        if (var_12[image->channel_map->offset] <= 0.0) {
          uVar21 = '\0';
          var_25._0_1_ = '\0';
          uVar18 = '\0';
          uVar22 = '\0';
          uVar8 = '\0';
          uVar9 = '\0';
          uVar23 = '\0';
          if (quantum_info->endian == var_7) goto LAB_00164cb8;
LAB_00164c3f:
          var_11[10] = uVar22;
          var_11[8] = uVar23;
          var_11[9] = uVar8;
          var_11[0xb] = (type_5)var_25;
        }
        else {
          var_13 = var_12[image->channel_map->offset] * (double)DAT_002e8148;
          if (var_42 <= var_13) {
            var_25._0_1_ = 0xff;
            uVar22 = 0xff;
            uVar8 = 0xff;
            uVar23 = 0xff;
          }
          else {
            lVar2 = (type_7)var_14(var_13 + (double)var_23);
            var_25._0_1_ = (type_5)lVar2;
            uVar23 = (type_5)((type_14)lVar2 >> 0x18);
            uVar8 = (type_5)((type_14)lVar2 >> 0x10);
            uVar22 = (type_5)((type_14)lVar2 >> 8);
          }
          uVar21 = (type_5)var_25;
          uVar18 = uVar22;
          uVar9 = uVar23;
          if (quantum_info->endian != var_7) goto LAB_00164c3f;
LAB_00164cb8:
          var_11[8] = uVar21;
          var_11[9] = uVar18;
          var_11[10] = uVar8;
          var_11[0xb] = uVar9;
        }
        if (image->channel_map[4].traits == var_9) {
LAB_00164c70:
          var_25._0_1_ = 0xff;
          uVar9 = 0xff;
          uVar18 = 0xff;
          uVar21 = 0xff;
          uVar8 = (type_5)var_25;
          uVar23 = 0xff;
          uVar22 = 0xff;
          if (quantum_info->endian != var_7) goto LAB_00164a1f;
LAB_00164c8e:
          uVar8 = uVar21;
          var_11[0xc] = (type_5)var_25;
          var_11[0xd] = uVar9;
          var_11[0xe] = uVar23;
        }
        else {
          if (var_12[image->channel_map[4].offset] <= 0.0) {
            var_25._0_1_ = '\0';
            uVar9 = '\0';
            uVar18 = '\0';
            uVar21 = '\0';
          }
          else {
            var_13 = var_12[image->channel_map[4].offset] * (double)DAT_002e8148;
            if (var_42 <= var_13) goto LAB_00164c70;
            lVar2 = (type_7)var_14(var_13 + (double)var_23);
            var_25._0_1_ = (type_5)lVar2;
            uVar21 = (type_5)((type_14)lVar2 >> 0x18);
            uVar18 = (type_5)((type_14)lVar2 >> 0x10);
            uVar9 = (type_5)((type_14)lVar2 >> 8);
          }
          uVar8 = (type_5)var_25;
          uVar23 = uVar18;
          uVar22 = uVar9;
          if (quantum_info->endian == var_7) goto LAB_00164c8e;
LAB_00164a1f:
          var_11[0xd] = uVar18;
          var_11[0xc] = uVar21;
          var_11[0xe] = uVar22;
        }
        var_11[0xf] = uVar8;
        var_10 = var_10 + 1;
        var_12 = var_12 + image->number_channels;
        var_11 = var_11 + quantum_info->pad + 0x10;
        if (var_10 == (int)number_pixels) {
          return;
        }
      } while( true );
    }
    if (var_3 != 0x40) goto LAB_001642d0;
    if (quantum_info->format == var_4) {
      var_10 = 0;
      var_13 = (double)var_21;
      if ((int)number_pixels < 1) {
        return;
      }
      do {
        var_41 = var_12[image->channel_map->offset] * (quantum_info->state).inverse_scale +
                quantum_info->minimum;
        uVar21 = (type_5)((type_14)var_41 >> 0x28);
        uVar18 = (type_5)((type_14)var_41 >> 0x20);
        local_94 = (type_5)((type_14)var_41 >> 0x18);
        local_a4 = (type_5)((type_14)var_41 >> 0x38);
        local_8c = (type_5)((type_14)var_41 >> 0x10);
        var_32._0_1_ = (type_5)((type_14)var_41 >> 0x30);
        local_ac = (type_5)((type_14)var_41 >> 8);
        if (quantum_info->endian == var_7) {
          *var_11 = var_43(var_41,0);
          var_11[4] = uVar18;
          var_11[5] = uVar21;
          var_11[1] = local_ac;
          var_11[2] = local_8c;
          var_11[3] = local_94;
          var_11[6] = (type_5)var_32;
          var_11[7] = local_a4;
        }
        else {
          var_11[2] = uVar21;
          var_11[3] = uVar18;
          var_11[7] = var_43(var_41,0);
          var_11[4] = local_94;
          *var_11 = local_a4;
          var_11[5] = local_8c;
          var_11[1] = (type_5)var_32;
          var_11[6] = local_ac;
        }
        var_41 = var_12[image->channel_map[1].offset] * (quantum_info->state).inverse_scale +
                quantum_info->minimum;
        uVar21 = (type_5)((type_14)var_41 >> 0x28);
        uVar18 = (type_5)((type_14)var_41 >> 0x20);
        local_94 = (type_5)((type_14)var_41 >> 0x18);
        local_a4 = (type_5)((type_14)var_41 >> 0x38);
        local_8c = (type_5)((type_14)var_41 >> 0x10);
        var_32._0_1_ = (type_5)((type_14)var_41 >> 0x30);
        local_ac = (type_5)((type_14)var_41 >> 8);
        if (quantum_info->endian == var_7) {
          var_11[8] = var_43(var_41,0);
          var_11[0xc] = uVar18;
          var_11[0xd] = uVar21;
          var_11[9] = local_ac;
          var_11[10] = local_8c;
          var_11[0xb] = local_94;
          var_11[0xe] = (type_5)var_32;
          var_11[0xf] = local_a4;
        }
        else {
          var_11[10] = uVar21;
          var_11[0xb] = uVar18;
          var_11[0xf] = var_43(var_41,0);
          var_11[0xc] = local_94;
          var_11[8] = local_a4;
          var_11[0xd] = local_8c;
          var_11[9] = (type_5)var_32;
          var_11[0xe] = local_ac;
        }
        var_41 = var_12[image->channel_map[2].offset] * (quantum_info->state).inverse_scale +
                quantum_info->minimum;
        uVar21 = (type_5)((type_14)var_41 >> 0x20);
        uVar18 = (type_5)((type_14)var_41 >> 0x28);
        local_a4 = (type_5)((type_14)var_41 >> 0x38);
        var_32._0_1_ = (type_5)((type_14)var_41 >> 0x30);
        local_94 = (type_5)((type_14)var_41 >> 0x18);
        local_8c = (type_5)((type_14)var_41 >> 0x10);
        local_ac = (type_5)((type_14)var_41 >> 8);
        if (quantum_info->endian == var_7) {
          var_11[0x10] = var_43(var_41,0);
          var_11[0x14] = uVar21;
          var_11[0x11] = local_ac;
          var_11[0x12] = local_8c;
          var_11[0x13] = local_94;
          var_11[0x15] = uVar18;
          var_11[0x16] = (type_5)var_32;
          var_11[0x17] = local_a4;
        }
        else {
          var_11[0x13] = uVar21;
          var_11[0x17] = var_43(var_41,0);
          var_11[0x10] = local_a4;
          var_11[0x11] = (type_5)var_32;
          var_11[0x12] = uVar18;
          var_11[0x14] = local_94;
          var_11[0x15] = local_8c;
          var_11[0x16] = local_ac;
        }
        var_41 = var_13;
        if (image->channel_map[4].traits != var_9) {
          var_41 = var_12[image->channel_map[4].offset];
        }
        var_41 = var_41 * (quantum_info->state).inverse_scale + quantum_info->minimum;
        uVar18 = (type_5)((type_14)var_41 >> 0x38);
        local_ac = var_43(var_41,0);
        uVar21 = local_ac;
        uVar9 = (type_5)((type_14)var_41 >> 0x20);
        uVar8 = (type_5)((type_14)var_41 >> 0x28);
        var_32._0_1_ = (type_5)((type_14)var_41 >> 0x30);
        local_94 = (type_5)((type_14)var_41 >> 0x18);
        local_8c = (type_5)((type_14)var_41 >> 0x10);
        local_ac = (type_5)((type_14)var_41 >> 8);
        if (quantum_info->endian == var_7) {
          var_11[0x18] = uVar21;
          var_11[0x1c] = uVar9;
          var_11[0x19] = local_ac;
          var_11[0x1a] = local_8c;
          var_11[0x1b] = local_94;
          var_11[0x1d] = uVar8;
          var_11[0x1e] = (type_5)var_32;
        }
        else {
          var_11[0x1b] = uVar9;
          var_11[0x18] = uVar18;
          var_11[0x19] = (type_5)var_32;
          var_11[0x1a] = uVar8;
          var_11[0x1c] = local_94;
          var_11[0x1d] = local_8c;
          var_11[0x1e] = local_ac;
          uVar18 = uVar21;
        }
        var_11[0x1f] = uVar18;
        var_10 = var_10 + 1;
        var_12 = var_12 + image->number_channels;
        var_11 = var_11 + quantum_info->pad + 0x20;
      } while (var_10 != (int)number_pixels);
      return;
    }
  }
  var_18 = 0;
  if (var_3 < 0x41) {
    var_18 = var_3;
  }
  var_44 = (type_10)(var_18 - 1);
  var_35 = var_44 & 0x1f;
  var_47 = 2 << (var_44 & 0x1f);
  var_29 = var_47;
  var_27 = 0 << var_35 | 2U >> 0x20 - var_35;
  if ((var_18 - 1 & 0x20) != 0) {
    var_29 = 0;
    var_27 = var_47;
  }
  local_7c = var_29 - 1;
  var_46 = (var_27 - 1) + (type_9)(var_29 != 0);
LAB_00163bfb:
  if ((int)number_pixels < 1) {
    return;
  }
  var_48 = 0;
  do {
    local_84 = 0;
    pPVar19 = image->channel_map;
    if (0.0 < var_12[pPVar19[2].offset]) {
      var_19 = (float)var_45(var_46,local_7c);
      if (var_46 < 0) {
        var_19 = var_19 + var_22;
      }
      local_84 = -1;
      var_13 = ((double)var_19 * var_12[pPVar19[2].offset]) / (double)var_21;
      if (var_13 < (double)var_22) {
        var_13 = var_13 + (double)var_23;
        if ((double)var_24 <= var_13) {
          lVar2 = (type_7)var_14(var_13 - (double)var_24);
          local_84 = var_45((int)((type_14)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
        }
        else {
          local_84 = (type_7)var_14(var_13);
        }
      }
    }
    var_18 = (quantum_info->state).bits;
    if (var_18 == 0) {
      (quantum_info->state).bits = 8;
      var_18 = 8;
    }
    if ((int)var_3 < 1) {
      var_13 = var_12[pPVar19[1].offset];
      if (!var_33(var_13)) goto LAB_00163e10;
      local_84 = 0;
    }
    else {
      do {
        while( true ) {
          var_27 = var_18;
          if (var_3 <= var_18) {
            var_27 = var_3;
          }
          var_29 = var_3 - var_27;
          var_3 = 0;
          if (-1 < (int)var_29) {
            var_3 = var_29;
          }
          if (var_18 == 8) {
            *var_11 = '\0';
          }
          var_18 = var_18 - var_27;
          var_35 = (type_10)var_3 & 0x1f;
          var_47 = (type_9)local_84 >> var_35 | local_84._4_4_ << 0x20 - var_35;
          if ((var_3 & 0x20) != 0) {
            var_47 = local_84._4_4_ >> ((type_10)var_3 & 0x1f);
          }
          (quantum_info->state).bits = var_18;
          var_35 = (type_10)((~(-1 << ((type_10)var_27 & 0x1f)) & var_47) << ((type_10)var_18 & 0x1f));
          if ((var_18 & 0x20) != 0) {
            var_35 = 0;
          }
          *var_11 = *var_11 | var_35;
          if (var_18 != 0) break;
          var_11 = var_11 + 1;
          (quantum_info->state).bits = 8;
          var_18 = 8;
          if ((int)var_29 < 1) goto LAB_00163de4;
        }
        var_18 = (quantum_info->state).bits;
      } while (0 < (int)var_29);
LAB_00163de4:
      pPVar19 = image->channel_map;
      var_3 = quantum_info->depth;
      var_13 = var_12[pPVar19[1].offset];
      if (var_33(var_13)) {
        local_84 = 0;
      }
      else {
LAB_00163e10:
        local_84 = 0;
        if (0.0 < var_13) {
          var_19 = (float)var_45(var_46,local_7c);
          if (var_46 < 0) {
            var_19 = var_19 + var_22;
          }
          local_84 = -1;
          var_13 = ((double)var_19 * var_13) / (double)var_21;
          if (var_13 < (double)var_22) {
            var_13 = var_13 + (double)var_23;
            if ((double)var_24 <= var_13) {
              lVar2 = (type_7)var_14(var_13 - (double)var_24);
              local_84 = var_45((int)((type_14)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
            }
            else {
              local_84 = (type_7)var_14(var_13);
            }
          }
        }
      }
      if (var_18 == 0) {
        (quantum_info->state).bits = 8;
        var_18 = 8;
      }
    }
    if ((int)var_3 < 1) {
      var_13 = var_12[pPVar19->offset];
      if (!var_33(var_13)) goto LAB_00163fd8;
      local_84 = 0;
    }
    else {
      do {
        while( true ) {
          var_27 = var_18;
          if (var_3 <= var_18) {
            var_27 = var_3;
          }
          var_29 = var_3 - var_27;
          var_3 = 0;
          if (-1 < (int)var_29) {
            var_3 = var_29;
          }
          if (var_18 == 8) {
            *var_11 = '\0';
          }
          var_18 = var_18 - var_27;
          var_35 = (type_10)var_3 & 0x1f;
          var_47 = (type_9)local_84 >> var_35 | local_84._4_4_ << 0x20 - var_35;
          if ((var_3 & 0x20) != 0) {
            var_47 = local_84._4_4_ >> ((type_10)var_3 & 0x1f);
          }
          (quantum_info->state).bits = var_18;
          var_35 = (type_10)((~(-1 << ((type_10)var_27 & 0x1f)) & var_47) << ((type_10)var_18 & 0x1f));
          if ((var_18 & 0x20) != 0) {
            var_35 = 0;
          }
          *var_11 = *var_11 | var_35;
          if (var_18 != 0) break;
          var_11 = var_11 + 1;
          (quantum_info->state).bits = 8;
          var_18 = 8;
          if ((int)var_29 < 1) goto LAB_00163fac;
        }
        var_18 = (quantum_info->state).bits;
      } while (0 < (int)var_29);
LAB_00163fac:
      pPVar19 = image->channel_map;
      var_3 = quantum_info->depth;
      var_13 = var_12[pPVar19->offset];
      if (var_33(var_13)) {
        local_84 = 0;
      }
      else {
LAB_00163fd8:
        local_84 = 0;
        if (0.0 < var_13) {
          var_19 = (float)var_45(var_46,local_7c);
          if (var_46 < 0) {
            var_19 = var_19 + var_22;
          }
          local_84 = -1;
          var_13 = ((double)var_19 * var_13) / (double)var_21;
          if (var_13 < (double)var_22) {
            var_13 = var_13 + (double)var_23;
            if ((double)var_24 <= var_13) {
              lVar2 = (type_7)var_14(var_13 - (double)var_24);
              local_84 = var_45((int)((type_14)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
            }
            else {
              local_84 = (type_7)var_14(var_13);
            }
          }
        }
      }
      if (var_18 == 0) {
        (quantum_info->state).bits = 8;
        var_18 = 8;
      }
    }
    if (0 < (int)var_3) {
      do {
        while( true ) {
          var_27 = var_3;
          if (var_18 <= var_3) {
            var_27 = var_18;
          }
          var_29 = var_3 - var_27;
          var_3 = 0;
          if (-1 < (int)var_29) {
            var_3 = var_29;
          }
          if (var_18 == 8) {
            *var_11 = '\0';
          }
          var_18 = var_18 - var_27;
          var_35 = (type_10)var_3 & 0x1f;
          var_47 = (type_9)local_84 >> var_35 | local_84._4_4_ << 0x20 - var_35;
          if ((var_3 & 0x20) != 0) {
            var_47 = local_84._4_4_ >> ((type_10)var_3 & 0x1f);
          }
          (quantum_info->state).bits = var_18;
          var_35 = (type_10)((~(-1 << ((type_10)var_27 & 0x1f)) & var_47) << ((type_10)var_18 & 0x1f));
          if ((var_18 & 0x20) != 0) {
            var_35 = 0;
          }
          *var_11 = *var_11 | var_35;
          if (var_18 != 0) break;
          var_11 = var_11 + 1;
          (quantum_info->state).bits = 8;
          var_18 = 8;
          if ((int)var_29 < 1) goto LAB_00164174;
        }
        var_18 = (quantum_info->state).bits;
      } while (0 < (int)var_29);
LAB_00164174:
      pPVar19 = image->channel_map;
      var_3 = quantum_info->depth;
    }
    if (pPVar19[4].traits == var_9) {
      var_13 = (double)var_21;
LAB_00164302:
      var_19 = (float)var_45(var_46,local_7c);
      if (var_46 < 0) {
        var_19 = var_19 + var_22;
      }
      local_84 = -1;
      var_13 = ((double)var_19 * var_13) / (double)var_21;
      if (var_13 < (double)var_22) {
        var_13 = var_13 + (double)var_23;
        if ((double)var_24 <= var_13) {
          lVar2 = (type_7)var_14(var_13 - (double)var_24);
          local_84 = var_45((int)((type_14)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
        }
        else {
          local_84 = (type_7)var_14(var_13);
        }
      }
    }
    else {
      local_84 = 0;
      var_13 = var_12[pPVar19[4].offset];
      if (0.0 < var_13) goto LAB_00164302;
    }
    if (var_18 == 0) {
      (quantum_info->state).bits = 8;
      var_18 = 8;
    }
    if (0 < (int)var_3) {
      while( true ) {
        var_27 = var_18;
        if (var_3 <= var_18) {
          var_27 = var_3;
        }
        var_29 = var_3 - var_27;
        var_3 = 0;
        if (-1 < (int)var_29) {
          var_3 = var_29;
        }
        if (var_18 == 8) {
          *var_11 = 0;
        }
        var_18 = var_18 - var_27;
        (quantum_info->state).bits = var_18;
        var_35 = (type_10)var_3 & 0x1f;
        var_47 = (type_9)local_84 >> var_35 | local_84._4_4_ << 0x20 - var_35;
        if ((var_3 & 0x20) != 0) {
          var_47 = local_84._4_4_ >> ((type_10)var_3 & 0x1f);
        }
        var_35 = (type_10)((~(-1 << ((type_10)var_27 & 0x1f)) & var_47) << ((type_10)var_18 & 0x1f));
        if ((var_18 & 0x20) != 0) {
          var_35 = 0;
        }
        *var_11 = *var_11 | var_35;
        if (var_18 == 0) {
          var_11 = var_11 + 1;
          (quantum_info->state).bits = 8;
        }
        if ((int)var_29 < 1) break;
        var_18 = (quantum_info->state).bits;
      }
    }
    var_48 = var_48 + 1;
    var_12 = var_12 + image->number_channels;
    var_11 = var_11 + quantum_info->pad;
    if (var_48 == (int)number_pixels) {
      return;
    }
    var_3 = quantum_info->depth;
  } while( true );
}


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

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

void __regparm2
MASKED(int param_1,uint *param_2,int param_3,undefined4 param_4,int param_5,byte *param_6,
            int param_7)

{
  float fVar1;
  longlong lVar2;
  double dVar3;
  float fVar4;
  double dVar5;
  char cVar6;
  char cVar7;
  byte bVar8;
  byte bVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  byte bVar13;
  int iVar14;
  byte bVar15;
  byte bVar16;
  byte bVar17;
  uint uVar18;
  int iVar19;
  uint uVar20;
  uint uVar21;
  float fVar22;
  uint local_b4;
  byte local_ac;
  byte local_a4;
  int local_9c;
  byte local_94;
  byte local_8c;
  undefined8 local_84;
  int local_7c;
  int iStack_78;
  uint local_74;
  int local_6c;
  uint local_5c;
  uint local_54;
  uint local_4c;
  uint local_44;
  uint local_34;
  
  dVar5 = DAT_002e8160;
  fVar1 = DAT_002df8a8;
  dVar3 = _DAT_002df2e0;
  if (param_7 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x291,
                  "ExportBGRAQuantum");
  }
  if (*(int *)(param_7 + 0x1c) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x292,
                  "ExportBGRAQuantum");
  }
  uVar18 = *param_2;
  if (uVar18 == 0x10) {
    if (param_2[2] == 1) {
      if (param_3 < 1) {
        return;
      }
      local_b4 = 0;
      do {
        uVar12 = FUN_001533f0((float)((longdouble)dVar3 *
                                     (longdouble)
                                     *(double *)
                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)));
        uVar18 = uVar12 >> 8 & 0xff;
        uVar20 = uVar12;
        if (param_2[0x10] == 1) {
          uVar20 = uVar18;
          uVar18 = uVar12;
        }
        *param_6 = (byte)uVar18;
        param_6[1] = (byte)uVar20;
        dVar5 = _DAT_002df2e0;
        uVar12 = FUN_001533f0((float)((longdouble)
                                      *(double *)
                                       (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *
                                     (longdouble)_DAT_002df2e0));
        uVar18 = uVar12 >> 8 & 0xff;
        uVar20 = uVar12;
        if (param_2[0x10] == 1) {
          uVar20 = uVar18;
          uVar18 = uVar12;
        }
        param_6[2] = (byte)uVar18;
        param_6[3] = (byte)uVar20;
        uVar18 = FUN_001533f0((float)((longdouble)dVar5 *
                                     (longdouble)
                                     *(double *)
                                      (param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)));
        bVar15 = (byte)(uVar18 >> 8);
        if (param_2[0x10] == 1) {
          bVar15 = (byte)uVar18;
          uVar18 = uVar18 >> 8 & 0xff;
        }
        param_6[4] = bVar15;
        param_6[5] = (byte)uVar18;
        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {
          fVar1 = 1.0;
        }
        else {
          fVar1 = (float)((longdouble)_DAT_002df2e0 *
                         (longdouble)
                         *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8));
        }
        uVar18 = FUN_001533f0(fVar1);
        bVar15 = (byte)(uVar18 >> 8);
        if (param_2[0x10] == 1) {
          bVar15 = (byte)uVar18;
          uVar18 = uVar18 >> 8 & 0xff;
        }
        local_b4 = local_b4 + 1;
        param_6[6] = bVar15;
        param_6[7] = (byte)uVar18;
        param_6 = param_6 + param_2[9] + 8;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
      } while (local_b4 != param_3);
      return;
    }
    if (param_3 < 1) {
      return;
    }
    local_b4 = 0;
    do {
      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);
      if (dVar3 <= 0.0) {
        iVar19 = 0;
        bVar15 = 0;
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar19 = -1;
        bVar15 = 0xff;
      }
      else {
        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        bVar15 = (byte)((uint)iVar19 >> 8);
      }
      bVar13 = bVar15;
      bVar9 = (byte)iVar19;
      if (param_2[0x10] != 1) {
        bVar13 = (byte)iVar19;
        bVar9 = bVar15;
      }
      param_6[1] = bVar13;
      *param_6 = bVar9;
      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);
      if (dVar3 <= 0.0) {
        iVar19 = 0;
        bVar15 = 0;
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar19 = -1;
        bVar15 = 0xff;
      }
      else {
        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        bVar15 = (byte)((uint)iVar19 >> 8);
      }
      bVar13 = (byte)iVar19;
      if (param_2[0x10] == 1) {
        bVar13 = bVar15;
        bVar15 = (byte)iVar19;
      }
      param_6[3] = bVar13;
      param_6[2] = bVar15;
      dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);
      if (dVar3 <= 0.0) {
        iVar19 = 0;
        bVar15 = 0;
      }
      else if ((double)DAT_002df8a8 <= dVar3) {
        iVar19 = -1;
        bVar15 = 0xff;
      }
      else {
        iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
        bVar15 = (byte)((uint)iVar19 >> 8);
      }
      bVar13 = (byte)iVar19;
      if (param_2[0x10] == 1) {
        bVar13 = bVar15;
        bVar15 = (byte)iVar19;
      }
      param_6[5] = bVar13;
      param_6[4] = bVar15;
      if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {
LAB_00164f80:
        iVar19 = -1;
        local_ac = 0xff;
      }
      else {
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
        if (dVar3 <= 0.0) {
          iVar19 = 0;
          local_ac = 0;
        }
        else {
          if ((double)DAT_002df8a8 <= dVar3) goto LAB_00164f80;
          iVar19 = (int)ROUND(dVar3 + (double)DAT_002df2b8);
          local_ac = (byte)((uint)iVar19 >> 8);
        }
      }
      bVar15 = (byte)iVar19;
      if (param_2[0x10] == 1) {
        bVar15 = local_ac;
        local_ac = (byte)iVar19;
      }
      param_6[7] = bVar15;
      local_b4 = local_b4 + 1;
      param_6[6] = local_ac;
      param_6 = param_6 + param_2[9] + 8;
      param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
      if (local_b4 == param_3) {
        return;
      }
    } while( true );
  }
  if (uVar18 < 0x11) {
    if (uVar18 == 8) {
      if (param_3 < 1) {
        return;
      }
      iVar19 = 0;
      do {
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);
        bVar15 = 0;
        if (0.0 < dVar3) {
          dVar3 = dVar3 / (double)DAT_002e814c;
          bVar15 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        *param_6 = bVar15;
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);
        bVar15 = 0;
        if (0.0 < dVar3) {
          dVar3 = dVar3 / (double)DAT_002e814c;
          bVar15 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        param_6[1] = bVar15;
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);
        bVar15 = 0;
        if (0.0 < dVar3) {
          dVar3 = dVar3 / (double)DAT_002e814c;
          bVar15 = 0xff;
          if (dVar3 < (double)DAT_002e8150) {
            bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);
          }
        }
        param_6[2] = bVar15;
        bVar15 = 0xff;
        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
          bVar15 = 0;
          if (0.0 < dVar3) {
            dVar3 = dVar3 / (double)DAT_002e814c;
            if ((double)DAT_002e8150 <= dVar3) {
              bVar15 = 0xff;
            }
            else {
              bVar15 = (byte)(short)ROUND(dVar3 + (double)DAT_002df2b8);
            }
          }
        }
        param_6[3] = bVar15;
        iVar19 = iVar19 + 1;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
        param_6 = param_6 + param_2[9] + 4;
      } while (iVar19 != param_3);
      return;
    }
    if (uVar18 == 10) {
      if (param_2[0xb] == 0) {
        if (param_3 < 1) {
          return;
        }
        uVar18 = 0;
        iVar19 = 0;
        do {
          iVar14 = 0;
          do {
            iVar11 = *(int *)(param_1 + 0x2a8);
            if (iVar14 == 2) {
              iVar11 = *(int *)(iVar11 + 0x20);
LAB_001644de:
              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);
            }
            else if (iVar14 == 3) {
              fVar1 = DAT_002df8a8;
              if (*(int *)(iVar11 + 0x34) != 0) {
                iVar11 = *(int *)(iVar11 + 0x38);
                goto LAB_001644de;
              }
            }
            else {
              if (iVar14 == 1) {
                iVar11 = *(int *)(iVar11 + 0x14);
              }
              else {
                iVar11 = *(int *)(iVar11 + 8);
              }
              fVar1 = (float)((longlong)ROUND(*(double *)(param_5 + iVar11 * 8)) & 0xffffffff);
            }
            uVar20 = (uint)(iVar14 + iVar19) % 3;
            if (uVar20 == 1) {
              if (0.0 < fVar1) {
                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
                if (DAT_002df8b0 <= fVar1) {
                  uVar18 = 0xfffff000;
                }
                else {
                  fVar1 = fVar1 + DAT_002df2b8;
                  if (DAT_002df2c8 <= fVar1) {
                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                  }
                  else {
                    local_34 = (uint)(longlong)ROUND(fVar1);
                  }
                  uVar18 = uVar18 | local_34 << 0xc;
                }
              }
            }
            else if (uVar20 == 2) {
              if (0.0 < fVar1) {
                fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
                if (DAT_002df8b0 <= fVar1) {
                  uVar18 = 0xfffffffc;
                }
                else {
                  fVar1 = fVar1 + DAT_002df2b8;
                  if (DAT_002df2c8 <= fVar1) {
                    local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                  }
                  else {
                    local_34 = (uint)(longlong)ROUND(fVar1);
                  }
                  uVar18 = uVar18 | local_34 << 2;
                }
              }
              bVar13 = (byte)(uVar18 >> 8);
              bVar15 = (byte)(uVar18 >> 0x10);
              local_a4 = (byte)(uVar18 >> 0x18);
              if (param_2[0x10] == 1) {
                *param_6 = (byte)uVar18;
                uVar18 = 0;
                param_6[2] = bVar15;
                param_6[1] = bVar13;
                param_6[3] = local_a4;
                param_6 = param_6 + 4;
              }
              else {
                param_6[3] = (byte)uVar18;
                uVar18 = 0;
                param_6[2] = bVar13;
                *param_6 = local_a4;
                param_6[1] = bVar15;
                param_6 = param_6 + 4;
              }
            }
            else if (0.0 < fVar1) {
              fVar1 = (fVar1 * DAT_003057bc) / DAT_002df8a8;
              if (DAT_002df8b0 <= fVar1) {
                uVar18 = uVar18 | 0xffc00000;
              }
              else {
                fVar1 = fVar1 + DAT_002df2b8;
                if (DAT_002df2c8 <= fVar1) {
                  local_34 = (uint)(longlong)ROUND(fVar1 - DAT_002df2c8);
                }
                else {
                  local_34 = (uint)(longlong)ROUND(fVar1);
                }
                uVar18 = uVar18 | local_34 << 0x16;
              }
            }
            iVar14 = iVar14 + 1;
          } while (iVar14 != 4);
          iVar19 = iVar19 + 4;
          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
          param_6 = param_6 + param_2[9];
          if (param_3 << 2 == iVar19) {
            return;
          }
        } while( true );
      }
      if (param_2[1] == 0x20) {
        if (param_3 < 1) {
          return;
        }
        uVar18 = param_2[0x14];
        local_9c = 0;
        local_74 = 10;
        while( true ) {
          local_b4 = 0;
          iVar19 = *(int *)(param_1 + 0x2a8);
          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);
          if (0.0 < dVar3) {
            local_b4 = 0xffffffff;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (uVar18 == 0) {
            param_2[0x14] = 0x20;
            uVar18 = 0x20;
          }
          if (0 < (int)local_74) {
            uVar20 = param_2[0x13];
            uVar12 = local_74;
            do {
              uVar21 = uVar18;
              if (uVar12 <= uVar18) {
                uVar21 = uVar12;
              }
              cVar6 = (char)uVar12;
              uVar12 = uVar12 - uVar21;
              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);
              cVar7 = (char)uVar18;
              uVar18 = uVar18 - uVar21;
              param_2[0x14] = uVar18;
              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<
                                (0x20U - cVar7 & 0x1f);
              param_2[0x13] = uVar20;
              if (uVar18 == 0) {
                bVar15 = (byte)(uVar20 >> 0x18);
                local_ac = (byte)(uVar20 >> 0x10);
                local_a4 = (byte)(uVar20 >> 8);
                if (param_2[0x10] == 1) {
                  *param_6 = (byte)uVar20;
                  param_6[3] = bVar15;
                  param_6[1] = local_a4;
                  param_6[2] = local_ac;
                }
                else {
                  *param_6 = bVar15;
                  param_6[1] = local_ac;
                  param_6[2] = local_a4;
                  param_6[3] = (byte)uVar20;
                }
                local_74 = *param_2;
                param_2[0x13] = 0;
                uVar20 = 0;
                param_2[0x14] = 0x20;
                uVar18 = 0x20;
                param_6 = param_6 + 4;
              }
            } while (0 < (int)uVar12);
            iVar19 = *(int *)(param_1 + 0x2a8);
          }
          local_b4 = 0;
          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);
          if (0.0 < dVar3) {
            local_b4 = 0xffffffff;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar20 = param_2[0x13];
            uVar12 = local_74;
            do {
              uVar21 = uVar18;
              if (uVar12 <= uVar18) {
                uVar21 = uVar12;
              }
              cVar6 = (char)uVar12;
              uVar12 = uVar12 - uVar21;
              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);
              cVar7 = (char)uVar18;
              uVar18 = uVar18 - uVar21;
              param_2[0x14] = uVar18;
              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<
                                (0x20U - cVar7 & 0x1f);
              param_2[0x13] = uVar20;
              if (uVar18 == 0) {
                bVar15 = (byte)(uVar20 >> 0x18);
                local_ac = (byte)(uVar20 >> 0x10);
                local_a4 = (byte)(uVar20 >> 8);
                if (param_2[0x10] == 1) {
                  *param_6 = (byte)uVar20;
                  param_6[3] = bVar15;
                  param_6[1] = local_a4;
                  param_6[2] = local_ac;
                }
                else {
                  *param_6 = bVar15;
                  param_6[1] = local_ac;
                  param_6[2] = local_a4;
                  param_6[3] = (byte)uVar20;
                }
                local_74 = *param_2;
                param_2[0x13] = 0;
                uVar20 = 0;
                param_2[0x14] = 0x20;
                uVar18 = 0x20;
                param_6 = param_6 + 4;
              }
            } while (0 < (int)uVar12);
            iVar19 = *(int *)(param_1 + 0x2a8);
          }
          local_b4 = 0;
          dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);
          if (0.0 < dVar3) {
            local_b4 = 0xffffffff;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_b4 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_b4 = local_34;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar20 = param_2[0x13];
            uVar12 = local_74;
            do {
              uVar21 = uVar18;
              if (uVar12 <= uVar18) {
                uVar21 = uVar12;
              }
              cVar6 = (char)uVar12;
              uVar12 = uVar12 - uVar21;
              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);
              cVar7 = (char)uVar18;
              uVar18 = uVar18 - uVar21;
              param_2[0x14] = uVar18;
              uVar20 = uVar20 | (local_b4 >> ((char)local_74 - cVar6 & 0x1fU) & uVar10) <<
                                (0x20U - cVar7 & 0x1f);
              param_2[0x13] = uVar20;
              if (uVar18 == 0) {
                bVar15 = (byte)(uVar20 >> 0x18);
                local_ac = (byte)(uVar20 >> 0x10);
                local_a4 = (byte)(uVar20 >> 8);
                if (param_2[0x10] == 1) {
                  *param_6 = (byte)uVar20;
                  param_6[3] = bVar15;
                  param_6[1] = local_a4;
                  param_6[2] = local_ac;
                }
                else {
                  *param_6 = bVar15;
                  param_6[1] = local_ac;
                  param_6[2] = local_a4;
                  param_6[3] = (byte)uVar20;
                }
                local_74 = *param_2;
                param_2[0x13] = 0;
                uVar20 = 0;
                param_2[0x14] = 0x20;
                uVar18 = 0x20;
                param_6 = param_6 + 4;
              }
            } while (0 < (int)uVar12);
            iVar19 = *(int *)(param_1 + 0x2a8);
          }
          local_b4 = 0x3ff;
          if (*(int *)(iVar19 + 0x34) != 0) {
            local_b4 = 0;
            dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);
            if (0.0 < dVar3) {
              dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
              if (dVar3 < (double)DAT_002df8b0) {
                dVar3 = dVar3 + (double)DAT_002df2b8;
                if ((double)DAT_002df2c8 <= dVar3) {
                  local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                  local_b4 = local_34;
                }
                else {
                  local_34 = (uint)(longlong)ROUND(dVar3);
                  local_b4 = local_34;
                }
              }
              else {
                local_b4 = 0xffffffff;
              }
            }
          }
          if (0 < (int)local_74) {
            uVar20 = param_2[0x13];
            uVar12 = local_74;
            while( true ) {
              uVar21 = uVar18;
              if (local_74 <= uVar18) {
                uVar21 = local_74;
              }
              cVar6 = (char)local_74;
              local_74 = local_74 - uVar21;
              uVar10 = *(uint *)(param_2[0x15] + uVar21 * 4);
              cVar7 = (char)uVar18;
              uVar18 = uVar18 - uVar21;
              param_2[0x14] = uVar18;
              uVar20 = uVar20 | (local_b4 >> ((char)uVar12 - cVar6 & 0x1fU) & uVar10) <<
                                (0x20U - cVar7 & 0x1f);
              param_2[0x13] = uVar20;
              if (uVar18 == 0) {
                bVar15 = (byte)(uVar20 >> 0x18);
                local_ac = (byte)(uVar20 >> 0x10);
                local_a4 = (byte)(uVar20 >> 8);
                if (param_2[0x10] == 1) {
                  *param_6 = (byte)uVar20;
                  param_6[3] = bVar15;
                  param_6[1] = local_a4;
                  param_6[2] = local_ac;
                }
                else {
                  *param_6 = bVar15;
                  param_6[1] = local_ac;
                  param_6[2] = local_a4;
                  param_6[3] = (byte)uVar20;
                }
                param_2[0x13] = 0;
                uVar20 = 0;
                uVar18 = 0x20;
                param_2[0x14] = 0x20;
                param_6 = param_6 + 4;
              }
              if ((int)local_74 < 1) break;
              uVar12 = *param_2;
            }
          }
          local_9c = local_9c + 1;
          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
          param_6 = param_6 + param_2[9];
          if (local_9c == param_3) break;
          local_74 = *param_2;
        }
        return;
      }
      iVar19 = 0;
      if (param_3 < 1) {
        return;
      }
      uVar18 = 10;
      do {
        iVar14 = *(int *)(param_1 + 0x2a8);
        dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 8) * 8);
        if (dVar3 <= 0.0) {
          local_4c = 0;
        }
        else {
          dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
          if ((double)DAT_002df8b0 <= dVar3) {
            local_4c = 0xffffffff;
          }
          else {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_4c = local_34;
            }
            else {
              local_34 = (uint)(longlong)ROUND(dVar3);
              local_4c = local_34;
            }
          }
        }
        uVar20 = param_2[0x14];
        if (uVar20 == 0) {
          param_2[0x14] = 8;
          uVar20 = 8;
        }
        if ((int)uVar18 < 1) {
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);
          if (!NAN(dVar3)) goto LAB_00165390;
          local_54 = 0;
        }
        else {
          do {
            while( true ) {
              uVar12 = uVar20;
              if (uVar18 <= uVar20) {
                uVar12 = uVar18;
              }
              uVar21 = uVar18 - uVar12;
              uVar18 = 0;
              if (-1 < (int)uVar21) {
                uVar18 = uVar21;
              }
              if (uVar20 == 8) {
                *param_6 = 0;
              }
              uVar20 = uVar20 - uVar12;
              bVar15 = (byte)uVar18 & 0x1f;
              uVar10 = local_4c >> bVar15 | 0 << 0x20 - bVar15;
              if ((uVar18 & 0x20) != 0) {
                uVar10 = 0 >> ((byte)uVar18 & 0x1f);
              }
              param_2[0x14] = uVar20;
              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
              if ((uVar20 & 0x20) != 0) {
                bVar15 = 0;
              }
              *param_6 = *param_6 | bVar15;
              if (uVar20 != 0) break;
              param_6 = param_6 + 1;
              param_2[0x14] = 8;
              uVar20 = 8;
              if ((int)uVar21 < 1) goto LAB_00165364;
            }
            uVar20 = param_2[0x14];
          } while (0 < (int)uVar21);
LAB_00165364:
          iVar14 = *(int *)(param_1 + 0x2a8);
          uVar18 = *param_2;
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x14) * 8);
          if (NAN(dVar3)) {
LAB_00165e72:
            local_54 = 0;
          }
          else {
LAB_00165390:
            if (dVar3 <= 0.0) goto LAB_00165e72;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if ((double)DAT_002df8b0 <= dVar3) {
              local_54 = 0xffffffff;
            }
            else {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_54 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_54 = local_34;
              }
            }
          }
          if (uVar20 == 0) {
            param_2[0x14] = 8;
            uVar20 = 8;
          }
        }
        if ((int)uVar18 < 1) {
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);
          if (!NAN(dVar3)) goto LAB_00165520;
          local_5c = 0;
        }
        else {
          do {
            while( true ) {
              uVar12 = uVar20;
              if (uVar18 <= uVar20) {
                uVar12 = uVar18;
              }
              uVar21 = uVar18 - uVar12;
              uVar18 = 0;
              if (-1 < (int)uVar21) {
                uVar18 = uVar21;
              }
              if (uVar20 == 8) {
                *param_6 = 0;
              }
              uVar20 = uVar20 - uVar12;
              bVar15 = (byte)uVar18 & 0x1f;
              uVar10 = local_54 >> bVar15 | 0 << 0x20 - bVar15;
              if ((uVar18 & 0x20) != 0) {
                uVar10 = 0 >> ((byte)uVar18 & 0x1f);
              }
              param_2[0x14] = uVar20;
              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
              if ((uVar20 & 0x20) != 0) {
                bVar15 = 0;
              }
              *param_6 = *param_6 | bVar15;
              if (uVar20 != 0) break;
              param_6 = param_6 + 1;
              param_2[0x14] = 8;
              uVar20 = 8;
              if ((int)uVar21 < 1) goto LAB_001654f4;
            }
            uVar20 = param_2[0x14];
          } while (0 < (int)uVar21);
LAB_001654f4:
          iVar14 = *(int *)(param_1 + 0x2a8);
          uVar18 = *param_2;
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x20) * 8);
          if (NAN(dVar3)) {
LAB_00165e52:
            local_5c = 0;
          }
          else {
LAB_00165520:
            if (dVar3 <= 0.0) goto LAB_00165e52;
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if ((double)DAT_002df8b0 <= dVar3) {
              local_5c = 0xffffffff;
            }
            else {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_5c = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_5c = local_34;
              }
            }
          }
          if (uVar20 == 0) {
            param_2[0x14] = 8;
            uVar20 = 8;
          }
        }
        if (0 < (int)uVar18) {
          do {
            while( true ) {
              uVar12 = uVar20;
              if (uVar18 <= uVar20) {
                uVar12 = uVar18;
              }
              uVar21 = uVar18 - uVar12;
              uVar18 = 0;
              if (-1 < (int)uVar21) {
                uVar18 = uVar21;
              }
              if (uVar20 == 8) {
                *param_6 = 0;
              }
              uVar20 = uVar20 - uVar12;
              bVar15 = (byte)uVar18 & 0x1f;
              uVar10 = local_5c >> bVar15 | 0 << 0x20 - bVar15;
              if ((uVar18 & 0x20) != 0) {
                uVar10 = 0 >> ((byte)uVar18 & 0x1f);
              }
              param_2[0x14] = uVar20;
              bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
              if ((uVar20 & 0x20) != 0) {
                bVar15 = 0;
              }
              *param_6 = *param_6 | bVar15;
              if (uVar20 != 0) break;
              param_6 = param_6 + 1;
              param_2[0x14] = 8;
              uVar20 = 8;
              if ((int)uVar21 < 1) goto LAB_00165684;
            }
            uVar20 = param_2[0x14];
          } while (0 < (int)uVar21);
LAB_00165684:
          iVar14 = *(int *)(param_1 + 0x2a8);
          uVar18 = *param_2;
        }
        if (*(int *)(iVar14 + 0x34) == 0) {
          local_44 = 0x3ff;
        }
        else {
          dVar3 = *(double *)(param_5 + *(int *)(iVar14 + 0x38) * 8);
          if (dVar3 <= 0.0) {
            local_44 = 0;
          }
          else {
            dVar3 = (dVar3 * (double)DAT_003057bc) / (double)DAT_002df8a8;
            if (dVar3 < (double)DAT_002df8b0) {
              dVar3 = dVar3 + (double)DAT_002df2b8;
              if ((double)DAT_002df2c8 <= dVar3) {
                local_34 = (uint)(longlong)ROUND(dVar3 - (double)DAT_002df2c8);
                local_44 = local_34;
              }
              else {
                local_34 = (uint)(longlong)ROUND(dVar3);
                local_44 = local_34;
              }
            }
            else {
              local_44 = 0xffffffff;
            }
          }
        }
        if (uVar20 == 0) {
          param_2[0x14] = 8;
          uVar20 = 8;
        }
        if (0 < (int)uVar18) {
          while( true ) {
            uVar12 = uVar20;
            if (uVar18 <= uVar20) {
              uVar12 = uVar18;
            }
            uVar21 = uVar18 - uVar12;
            uVar18 = 0;
            if (-1 < (int)uVar21) {
              uVar18 = uVar21;
            }
            if (uVar20 == 8) {
              *param_6 = 0;
            }
            uVar20 = uVar20 - uVar12;
            param_2[0x14] = uVar20;
            bVar15 = (byte)uVar18 & 0x1f;
            uVar10 = local_44 >> bVar15 | 0 << 0x20 - bVar15;
            if ((uVar18 & 0x20) != 0) {
              uVar10 = 0 >> ((byte)uVar18 & 0x1f);
            }
            bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
            if ((uVar20 & 0x20) != 0) {
              bVar15 = 0;
            }
            *param_6 = *param_6 | bVar15;
            if (uVar20 == 0) {
              param_6 = param_6 + 1;
              param_2[0x14] = 8;
            }
            if ((int)uVar21 < 1) break;
            uVar20 = param_2[0x14];
          }
        }
        iVar19 = iVar19 + 1;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
        param_6 = param_6 + param_2[9];
        if (iVar19 == param_3) {
          return;
        }
        uVar18 = *param_2;
      } while( true );
    }
LAB_001642d0:
    local_7c = 0;
    iStack_78 = 0;
    if (uVar18 == 0) goto LAB_00163bfb;
  }
  else {
    if (uVar18 == 0x20) {
      if (param_2[2] == 1) {
        if (param_3 < 1) {
          return;
        }
        local_b4 = 0;
        do {
          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *
                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);
          bVar15 = (byte)((uint)fVar4 >> 8);
          bVar9 = (byte)((uint)fVar4 >> 0x10);
          bVar13 = (byte)((uint)fVar4 >> 0x18);
          if (param_2[0x10] == 1) {
            *param_6 = SUB41(fVar4,0);
            param_6[1] = bVar15;
            param_6[2] = bVar9;
            param_6[3] = bVar13;
          }
          else {
            param_6[1] = bVar9;
            *param_6 = bVar13;
            param_6[2] = bVar15;
            param_6[3] = SUB41(fVar4,0);
          }
          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *
                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);
          bVar15 = (byte)((uint)fVar4 >> 8);
          bVar9 = (byte)((uint)fVar4 >> 0x10);
          bVar13 = (byte)((uint)fVar4 >> 0x18);
          if (param_2[0x10] == 1) {
            param_6[4] = SUB41(fVar4,0);
            param_6[6] = bVar9;
            param_6[5] = bVar15;
            param_6[7] = bVar13;
          }
          else {
            param_6[5] = bVar9;
            param_6[4] = bVar13;
            param_6[6] = bVar15;
            param_6[7] = SUB41(fVar4,0);
          }
          fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *
                  (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);
          bVar15 = (byte)((uint)fVar4 >> 8);
          bVar9 = (byte)((uint)fVar4 >> 0x18);
          bVar13 = (byte)((uint)fVar4 >> 0x10);
          if (param_2[0x10] == 1) {
            param_6[8] = SUB41(fVar4,0);
            param_6[10] = bVar13;
            param_6[9] = bVar15;
            param_6[0xb] = bVar9;
          }
          else {
            param_6[10] = bVar15;
            param_6[8] = bVar9;
            param_6[9] = bVar13;
            param_6[0xb] = SUB41(fVar4,0);
          }
          fVar4 = fVar1;
          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
            fVar4 = (float)*(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
          }
          fVar4 = fVar4 * (float)*(double *)(param_2 + 0x11) + (float)*(double *)(param_2 + 3);
          bVar15 = (byte)((uint)fVar4 >> 8);
          fVar22 = (float)((uint)fVar4 >> 0x18);
          bVar13 = (byte)((uint)fVar4 >> 0x10);
          if (param_2[0x10] == 1) {
            param_6[0xc] = SUB41(fVar4,0);
            param_6[0xe] = bVar13;
            param_6[0xd] = bVar15;
          }
          else {
            param_6[0xe] = bVar15;
            param_6[0xc] = (byte)((uint)fVar4 >> 0x18);
            param_6[0xd] = bVar13;
            fVar22 = fVar4;
          }
          param_6[0xf] = SUB41(fVar22,0);
          local_b4 = local_b4 + 1;
          param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
          param_6 = param_6 + param_2[9] + 0x10;
        } while (local_b4 != param_3);
        return;
      }
      if (param_3 < 1) {
        return;
      }
      local_b4 = 0;
      do {
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8);
        if (dVar3 <= 0.0) {
          bVar15 = 0;
          local_34._0_1_ = 0;
          bVar13 = 0;
          bVar17 = 0;
          bVar9 = 0;
          bVar8 = 0;
          if (param_2[0x10] == 1) goto LAB_00164d14;
LAB_00164af3:
          param_6[1] = bVar9;
          *param_6 = bVar8;
          param_6[2] = bVar17;
          param_6[3] = (byte)local_34;
        }
        else {
          dVar3 = dVar3 * (double)DAT_002e8148;
          if (dVar5 <= dVar3) {
            local_34._0_1_ = 0xff;
            bVar17 = 0xff;
            bVar9 = 0xff;
            bVar8 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (byte)lVar2;
            bVar8 = (byte)((ulonglong)lVar2 >> 0x18);
            bVar9 = (byte)((ulonglong)lVar2 >> 0x10);
            bVar17 = (byte)((ulonglong)lVar2 >> 8);
          }
          bVar15 = (byte)local_34;
          bVar13 = bVar17;
          if (param_2[0x10] != 1) goto LAB_00164af3;
LAB_00164d14:
          *param_6 = bVar15;
          param_6[1] = bVar13;
          param_6[2] = bVar9;
          param_6[3] = bVar8;
        }
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8);
        if (dVar3 <= 0.0) {
          bVar15 = 0;
          local_34._0_1_ = 0;
          bVar9 = 0;
          bVar16 = 0;
          bVar8 = 0;
          bVar13 = 0;
          bVar17 = 0;
          if (param_2[0x10] == 1) goto LAB_00164ce4;
LAB_00164b98:
          param_6[4] = bVar17;
          param_6[5] = bVar8;
          param_6[6] = bVar16;
          param_6[7] = (byte)local_34;
        }
        else {
          dVar3 = dVar3 * (double)DAT_002e8148;
          if (DAT_002e8160 <= dVar3) {
            local_34._0_1_ = 0xff;
            bVar16 = 0xff;
            bVar8 = 0xff;
            bVar17 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (byte)lVar2;
            bVar16 = (byte)((ulonglong)lVar2 >> 8);
            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);
            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);
          }
          bVar15 = (byte)local_34;
          bVar13 = bVar17;
          bVar9 = bVar16;
          if (param_2[0x10] != 1) goto LAB_00164b98;
LAB_00164ce4:
          param_6[4] = bVar15;
          param_6[5] = bVar9;
          param_6[6] = bVar8;
          param_6[7] = bVar13;
        }
        dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8);
        if (dVar3 <= 0.0) {
          bVar15 = 0;
          local_34._0_1_ = 0;
          bVar13 = 0;
          bVar16 = 0;
          bVar8 = 0;
          bVar9 = 0;
          bVar17 = 0;
          if (param_2[0x10] == 1) goto LAB_00164cb8;
LAB_00164c3f:
          param_6[10] = bVar16;
          param_6[8] = bVar17;
          param_6[9] = bVar8;
          param_6[0xb] = (byte)local_34;
        }
        else {
          dVar3 = dVar3 * (double)DAT_002e8148;
          if (DAT_002e8160 <= dVar3) {
            local_34._0_1_ = 0xff;
            bVar16 = 0xff;
            bVar8 = 0xff;
            bVar17 = 0xff;
          }
          else {
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (byte)lVar2;
            bVar17 = (byte)((ulonglong)lVar2 >> 0x18);
            bVar8 = (byte)((ulonglong)lVar2 >> 0x10);
            bVar16 = (byte)((ulonglong)lVar2 >> 8);
          }
          bVar15 = (byte)local_34;
          bVar13 = bVar16;
          bVar9 = bVar17;
          if (param_2[0x10] != 1) goto LAB_00164c3f;
LAB_00164cb8:
          param_6[8] = bVar15;
          param_6[9] = bVar13;
          param_6[10] = bVar8;
          param_6[0xb] = bVar9;
        }
        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) == 0) {
LAB_00164c70:
          local_34._0_1_ = 0xff;
          bVar9 = 0xff;
          bVar13 = 0xff;
          bVar15 = 0xff;
          bVar8 = (byte)local_34;
          bVar17 = 0xff;
          bVar16 = 0xff;
          if (param_2[0x10] != 1) goto LAB_00164a1f;
LAB_00164c8e:
          bVar8 = bVar15;
          param_6[0xc] = (byte)local_34;
          param_6[0xd] = bVar9;
          param_6[0xe] = bVar17;
        }
        else {
          dVar3 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
          if (dVar3 <= 0.0) {
            local_34._0_1_ = 0;
            bVar9 = 0;
            bVar13 = 0;
            bVar15 = 0;
          }
          else {
            dVar3 = dVar3 * (double)DAT_002e8148;
            if (DAT_002e8160 <= dVar3) goto LAB_00164c70;
            lVar2 = (longlong)ROUND(dVar3 + (double)DAT_002df2b8);
            local_34._0_1_ = (byte)lVar2;
            bVar15 = (byte)((ulonglong)lVar2 >> 0x18);
            bVar13 = (byte)((ulonglong)lVar2 >> 0x10);
            bVar9 = (byte)((ulonglong)lVar2 >> 8);
          }
          bVar8 = (byte)local_34;
          bVar17 = bVar13;
          bVar16 = bVar9;
          if (param_2[0x10] == 1) goto LAB_00164c8e;
LAB_00164a1f:
          param_6[0xd] = bVar13;
          param_6[0xc] = bVar15;
          param_6[0xe] = bVar16;
        }
        param_6[0xf] = bVar8;
        local_b4 = local_b4 + 1;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
        param_6 = param_6 + param_2[9] + 0x10;
        if (local_b4 == param_3) {
          return;
        }
      } while( true );
    }
    if (uVar18 != 0x40) goto LAB_001642d0;
    if (param_2[2] == 1) {
      local_b4 = 0;
      dVar3 = (double)DAT_002df8a8;
      if (param_3 < 1) {
        return;
      }
      do {
        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) *
                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);
        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);
        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);
        local_94 = (byte)((ulonglong)dVar5 >> 0x18);
        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);
        local_8c = (byte)((ulonglong)dVar5 >> 0x10);
        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);
        local_ac = (byte)((ulonglong)dVar5 >> 8);
        if (param_2[0x10] == 1) {
          *param_6 = SUB81(dVar5,0);
          param_6[4] = bVar13;
          param_6[5] = bVar15;
          param_6[1] = local_ac;
          param_6[2] = local_8c;
          param_6[3] = local_94;
          param_6[6] = (byte)local_9c;
          param_6[7] = local_a4;
        }
        else {
          param_6[2] = bVar15;
          param_6[3] = bVar13;
          param_6[7] = SUB81(dVar5,0);
          param_6[4] = local_94;
          *param_6 = local_a4;
          param_6[5] = local_8c;
          param_6[1] = (byte)local_9c;
          param_6[6] = local_ac;
        }
        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) *
                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);
        bVar15 = (byte)((ulonglong)dVar5 >> 0x28);
        bVar13 = (byte)((ulonglong)dVar5 >> 0x20);
        local_94 = (byte)((ulonglong)dVar5 >> 0x18);
        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);
        local_8c = (byte)((ulonglong)dVar5 >> 0x10);
        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);
        local_ac = (byte)((ulonglong)dVar5 >> 8);
        if (param_2[0x10] == 1) {
          param_6[8] = SUB81(dVar5,0);
          param_6[0xc] = bVar13;
          param_6[0xd] = bVar15;
          param_6[9] = local_ac;
          param_6[10] = local_8c;
          param_6[0xb] = local_94;
          param_6[0xe] = (byte)local_9c;
          param_6[0xf] = local_a4;
        }
        else {
          param_6[10] = bVar15;
          param_6[0xb] = bVar13;
          param_6[0xf] = SUB81(dVar5,0);
          param_6[0xc] = local_94;
          param_6[8] = local_a4;
          param_6[0xd] = local_8c;
          param_6[9] = (byte)local_9c;
          param_6[0xe] = local_ac;
        }
        dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) *
                *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);
        bVar15 = (byte)((ulonglong)dVar5 >> 0x20);
        bVar13 = (byte)((ulonglong)dVar5 >> 0x28);
        local_a4 = (byte)((ulonglong)dVar5 >> 0x38);
        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);
        local_94 = (byte)((ulonglong)dVar5 >> 0x18);
        local_8c = (byte)((ulonglong)dVar5 >> 0x10);
        local_ac = (byte)((ulonglong)dVar5 >> 8);
        if (param_2[0x10] == 1) {
          param_6[0x10] = SUB81(dVar5,0);
          param_6[0x14] = bVar15;
          param_6[0x11] = local_ac;
          param_6[0x12] = local_8c;
          param_6[0x13] = local_94;
          param_6[0x15] = bVar13;
          param_6[0x16] = (byte)local_9c;
          param_6[0x17] = local_a4;
        }
        else {
          param_6[0x13] = bVar15;
          param_6[0x17] = SUB81(dVar5,0);
          param_6[0x10] = local_a4;
          param_6[0x11] = (byte)local_9c;
          param_6[0x12] = bVar13;
          param_6[0x14] = local_94;
          param_6[0x15] = local_8c;
          param_6[0x16] = local_ac;
        }
        dVar5 = dVar3;
        if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
          dVar5 = *(double *)(param_5 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8);
        }
        dVar5 = dVar5 * *(double *)(param_2 + 0x11) + *(double *)(param_2 + 3);
        bVar13 = (byte)((ulonglong)dVar5 >> 0x38);
        local_ac = SUB81(dVar5,0);
        bVar15 = local_ac;
        bVar9 = (byte)((ulonglong)dVar5 >> 0x20);
        bVar8 = (byte)((ulonglong)dVar5 >> 0x28);
        local_9c._0_1_ = (byte)((ulonglong)dVar5 >> 0x30);
        local_94 = (byte)((ulonglong)dVar5 >> 0x18);
        local_8c = (byte)((ulonglong)dVar5 >> 0x10);
        local_ac = (byte)((ulonglong)dVar5 >> 8);
        if (param_2[0x10] == 1) {
          param_6[0x18] = bVar15;
          param_6[0x1c] = bVar9;
          param_6[0x19] = local_ac;
          param_6[0x1a] = local_8c;
          param_6[0x1b] = local_94;
          param_6[0x1d] = bVar8;
          param_6[0x1e] = (byte)local_9c;
        }
        else {
          param_6[0x1b] = bVar9;
          param_6[0x18] = bVar13;
          param_6[0x19] = (byte)local_9c;
          param_6[0x1a] = bVar8;
          param_6[0x1c] = local_94;
          param_6[0x1d] = local_8c;
          param_6[0x1e] = local_ac;
          bVar13 = bVar15;
        }
        param_6[0x1f] = bVar13;
        local_b4 = local_b4 + 1;
        param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
        param_6 = param_6 + param_2[9] + 0x20;
      } while (local_b4 != param_3);
      return;
    }
  }
  uVar20 = 0;
  if (uVar18 < 0x41) {
    uVar20 = uVar18;
  }
  bVar13 = (byte)(uVar20 - 1);
  bVar15 = bVar13 & 0x1f;
  uVar10 = 2 << (bVar13 & 0x1f);
  uVar21 = uVar10;
  uVar12 = 0 << bVar15 | 2U >> 0x20 - bVar15;
  if ((uVar20 - 1 & 0x20) != 0) {
    uVar21 = 0;
    uVar12 = uVar10;
  }
  local_7c = uVar21 - 1;
  iStack_78 = (uVar12 - 1) + (uint)(uVar21 != 0);
LAB_00163bfb:
  if (param_3 < 1) {
    return;
  }
  local_6c = 0;
  do {
    local_84 = 0;
    iVar19 = *(int *)(param_1 + 0x2a8);
    dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x20) * 8);
    if (0.0 < dVar3) {
      fVar1 = (float)CONCAT44(iStack_78,local_7c);
      if (iStack_78 < 0) {
        fVar1 = fVar1 + DAT_002df8b0;
      }
      local_84 = -1;
      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
      if (dVar3 < (double)DAT_002df8b0) {
        dVar3 = dVar3 + (double)DAT_002df2b8;
        if ((double)DAT_002df2c8 <= dVar3) {
          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
        }
        else {
          local_84 = (longlong)ROUND(dVar3);
        }
      }
    }
    uVar20 = param_2[0x14];
    if (uVar20 == 0) {
      param_2[0x14] = 8;
      uVar20 = 8;
    }
    if ((int)uVar18 < 1) {
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);
      if (!NAN(dVar3)) goto LAB_00163e10;
      local_84 = 0;
    }
    else {
      do {
        while( true ) {
          uVar12 = uVar20;
          if (uVar18 <= uVar20) {
            uVar12 = uVar18;
          }
          uVar21 = uVar18 - uVar12;
          uVar18 = 0;
          if (-1 < (int)uVar21) {
            uVar18 = uVar21;
          }
          if (uVar20 == 8) {
            *param_6 = 0;
          }
          uVar20 = uVar20 - uVar12;
          bVar15 = (byte)uVar18 & 0x1f;
          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;
          if ((uVar18 & 0x20) != 0) {
            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);
          }
          param_2[0x14] = uVar20;
          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
          if ((uVar20 & 0x20) != 0) {
            bVar15 = 0;
          }
          *param_6 = *param_6 | bVar15;
          if (uVar20 != 0) break;
          param_6 = param_6 + 1;
          param_2[0x14] = 8;
          uVar20 = 8;
          if ((int)uVar21 < 1) goto LAB_00163de4;
        }
        uVar20 = param_2[0x14];
      } while (0 < (int)uVar21);
LAB_00163de4:
      iVar19 = *(int *)(param_1 + 0x2a8);
      uVar18 = *param_2;
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x14) * 8);
      if (NAN(dVar3)) {
        local_84 = 0;
      }
      else {
LAB_00163e10:
        local_84 = 0;
        if (0.0 < dVar3) {
          fVar1 = (float)CONCAT44(iStack_78,local_7c);
          if (iStack_78 < 0) {
            fVar1 = fVar1 + DAT_002df8b0;
          }
          local_84 = -1;
          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
          if (dVar3 < (double)DAT_002df8b0) {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
            }
            else {
              local_84 = (longlong)ROUND(dVar3);
            }
          }
        }
      }
      if (uVar20 == 0) {
        param_2[0x14] = 8;
        uVar20 = 8;
      }
    }
    if ((int)uVar18 < 1) {
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);
      if (!NAN(dVar3)) goto LAB_00163fd8;
      local_84 = 0;
    }
    else {
      do {
        while( true ) {
          uVar12 = uVar20;
          if (uVar18 <= uVar20) {
            uVar12 = uVar18;
          }
          uVar21 = uVar18 - uVar12;
          uVar18 = 0;
          if (-1 < (int)uVar21) {
            uVar18 = uVar21;
          }
          if (uVar20 == 8) {
            *param_6 = 0;
          }
          uVar20 = uVar20 - uVar12;
          bVar15 = (byte)uVar18 & 0x1f;
          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;
          if ((uVar18 & 0x20) != 0) {
            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);
          }
          param_2[0x14] = uVar20;
          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
          if ((uVar20 & 0x20) != 0) {
            bVar15 = 0;
          }
          *param_6 = *param_6 | bVar15;
          if (uVar20 != 0) break;
          param_6 = param_6 + 1;
          param_2[0x14] = 8;
          uVar20 = 8;
          if ((int)uVar21 < 1) goto LAB_00163fac;
        }
        uVar20 = param_2[0x14];
      } while (0 < (int)uVar21);
LAB_00163fac:
      iVar19 = *(int *)(param_1 + 0x2a8);
      uVar18 = *param_2;
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 8) * 8);
      if (NAN(dVar3)) {
        local_84 = 0;
      }
      else {
LAB_00163fd8:
        local_84 = 0;
        if (0.0 < dVar3) {
          fVar1 = (float)CONCAT44(iStack_78,local_7c);
          if (iStack_78 < 0) {
            fVar1 = fVar1 + DAT_002df8b0;
          }
          local_84 = -1;
          dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
          if (dVar3 < (double)DAT_002df8b0) {
            dVar3 = dVar3 + (double)DAT_002df2b8;
            if ((double)DAT_002df2c8 <= dVar3) {
              lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
              local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
            }
            else {
              local_84 = (longlong)ROUND(dVar3);
            }
          }
        }
      }
      if (uVar20 == 0) {
        param_2[0x14] = 8;
        uVar20 = 8;
      }
    }
    if (0 < (int)uVar18) {
      do {
        while( true ) {
          uVar12 = uVar18;
          if (uVar20 <= uVar18) {
            uVar12 = uVar20;
          }
          uVar21 = uVar18 - uVar12;
          uVar18 = 0;
          if (-1 < (int)uVar21) {
            uVar18 = uVar21;
          }
          if (uVar20 == 8) {
            *param_6 = 0;
          }
          uVar20 = uVar20 - uVar12;
          bVar15 = (byte)uVar18 & 0x1f;
          uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;
          if ((uVar18 & 0x20) != 0) {
            uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);
          }
          param_2[0x14] = uVar20;
          bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
          if ((uVar20 & 0x20) != 0) {
            bVar15 = 0;
          }
          *param_6 = *param_6 | bVar15;
          if (uVar20 != 0) break;
          param_6 = param_6 + 1;
          param_2[0x14] = 8;
          uVar20 = 8;
          if ((int)uVar21 < 1) goto LAB_00164174;
        }
        uVar20 = param_2[0x14];
      } while (0 < (int)uVar21);
LAB_00164174:
      iVar19 = *(int *)(param_1 + 0x2a8);
      uVar18 = *param_2;
    }
    if (*(int *)(iVar19 + 0x34) == 0) {
      dVar3 = (double)DAT_002df8a8;
LAB_00164302:
      fVar1 = (float)CONCAT44(iStack_78,local_7c);
      if (iStack_78 < 0) {
        fVar1 = fVar1 + DAT_002df8b0;
      }
      local_84 = -1;
      dVar3 = ((double)fVar1 * dVar3) / (double)DAT_002df8a8;
      if (dVar3 < (double)DAT_002df8b0) {
        dVar3 = dVar3 + (double)DAT_002df2b8;
        if ((double)DAT_002df2c8 <= dVar3) {
          lVar2 = (longlong)ROUND(dVar3 - (double)DAT_002df2c8);
          local_84 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) + -0x80000000,(int)lVar2);
        }
        else {
          local_84 = (longlong)ROUND(dVar3);
        }
      }
    }
    else {
      local_84 = 0;
      dVar3 = *(double *)(param_5 + *(int *)(iVar19 + 0x38) * 8);
      if (0.0 < dVar3) goto LAB_00164302;
    }
    if (uVar20 == 0) {
      param_2[0x14] = 8;
      uVar20 = 8;
    }
    if (0 < (int)uVar18) {
      while( true ) {
        uVar12 = uVar20;
        if (uVar18 <= uVar20) {
          uVar12 = uVar18;
        }
        uVar21 = uVar18 - uVar12;
        uVar18 = 0;
        if (-1 < (int)uVar21) {
          uVar18 = uVar21;
        }
        if (uVar20 == 8) {
          *param_6 = 0;
        }
        uVar20 = uVar20 - uVar12;
        param_2[0x14] = uVar20;
        bVar15 = (byte)uVar18 & 0x1f;
        uVar10 = (uint)local_84 >> bVar15 | local_84._4_4_ << 0x20 - bVar15;
        if ((uVar18 & 0x20) != 0) {
          uVar10 = local_84._4_4_ >> ((byte)uVar18 & 0x1f);
        }
        bVar15 = (byte)((~(-1 << ((byte)uVar12 & 0x1f)) & uVar10) << ((byte)uVar20 & 0x1f));
        if ((uVar20 & 0x20) != 0) {
          bVar15 = 0;
        }
        *param_6 = *param_6 | bVar15;
        if (uVar20 == 0) {
          param_6 = param_6 + 1;
          param_2[0x14] = 8;
        }
        if ((int)uVar21 < 1) break;
        uVar20 = param_2[0x14];
      }
    }
    local_6c = local_6c + 1;
    param_5 = param_5 + *(int *)(param_1 + 0x298) * 8;
    param_6 = param_6 + param_2[9];
    if (local_6c == param_3) {
      return;
    }
    uVar18 = *param_2;
  } while( true );
}

