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

uchar * DecodeImage(Image *blob,Image *image,size_t bytes_per_line,uint bits_per_pixel,
                   size_t *extent)

{
  int iVar1;
  ClassType CVar2;
  ushort uVar3;
  Image *image_00;
  uint uVar4;
  uchar *pixels;
  uint uVar5;
  uchar *__src;
  uint uVar6;
  uint extraout_ECX;
  int iVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  uchar *puVar12;
  int in_GS_OFFSET;
  byte bVar13;
  undefined8 uVar14;
  uchar *local_89c;
  uchar *local_88c;
  uint local_878;
  uint local_868;
  uint local_85c;
  int local_850;
  uint local_84c;
  uchar *local_840;
  MagickSizeType number_pixels;
  uchar unpack_buffer [2048];
  
  bVar13 = 0;
  uVar14 = __x86_get_pc_thunk_di();
  piVar8 = (int *)((ulonglong)uVar14 >> 0x20);
  image_00 = (Image *)uVar14;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  uVar4 = piVar8[6];
  local_84c = uVar4;
  if (blob < (Image *)0x9) {
    local_85c = extraout_ECX & 0x7fff;
    local_868 = 1;
  }
  else {
    local_85c = extraout_ECX;
    if (blob == (Image *)0x10) {
      local_868 = 2;
      local_84c = uVar4 * 2;
    }
    else if (blob == (Image *)0x20) {
      local_868 = 1;
      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;
    }
    else {
      local_868 = 1;
    }
  }
  if (local_85c == 0) {
    local_85c = local_84c;
  }
  if (*piVar8 == 1) {
    uVar4 = uVar4 << 2;
  }
  uVar4 = uVar4 | 0x8000;
  local_88c = (uchar *)AcquireQuantumMemory(piVar8[7],uVar4);
  if (local_88c != (uchar *)0x0) {
    iVar7 = piVar8[7];
    image->storage_class = iVar7 * uVar4;
    memset(local_88c,0,iVar7 * uVar4);
    pixels = (uchar *)AcquireQuantumMemory(uVar4,2);
    if (pixels == (uchar *)0x0) {
      RelinquishMagickMemory(local_88c);
      local_88c = (uchar *)0x0;
    }
    else {
      memset(pixels,0,uVar4 * 2);
      puVar12 = unpack_buffer;
      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {
        puVar12[0] = '\0';
        puVar12[1] = '\0';
        puVar12[2] = '\0';
        puVar12[3] = '\0';
        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;
      }
      if (local_85c < 8) {
        if (0 < piVar8[7]) {
          iVar7 = 0;
          do {
            number_pixels._4_4_ = 0;
            iVar10 = local_84c * piVar8[0xa6] * iVar7;
            number_pixels._0_4_ = local_85c;
            uVar4 = ReadBlob(image_00,local_85c,pixels);
            if (((uint)number_pixels != uVar4) ||
               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),
               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))
            goto LAB_0023eb03;
            iVar7 = iVar7 + 1;
            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);
          } while (iVar7 < piVar8[7]);
        }
      }
      else {
        local_850 = 0;
        local_840 = local_88c;
        if (0 < piVar8[7]) {
          do {
            local_89c = local_840;
            if (local_85c < 0xc9) {
              local_878 = ReadBlobByte(image_00);
            }
            else {
              uVar3 = ReadBlobMSBShort(image_00);
              local_878 = (uint)uVar3;
            }
            if (((uVar4 <= local_878) || (local_878 == 0)) ||
               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;
            if (0 < (int)local_878) {
              iVar7 = 0;
              do {
                while( true ) {
                  uVar5 = (int)local_89c - (int)local_88c;
                  bVar13 = pixels[iVar7];
                  if (-1 < (char)bVar13) break;
                  number_pixels._4_4_ = 0;
                  number_pixels._0_4_ = local_868;
                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)
                  ;
                  iVar10 = number_pixels._4_4_;
                  uVar5 = (uint)number_pixels;
                  iVar9 = 0;
                  CVar2 = image->storage_class;
                  puVar12 = local_89c;
                  do {
                    uVar6 = (int)puVar12 - (int)local_88c;
                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&
                       (uVar6 + uVar5 <= CVar2)) {
                      memcpy(puVar12,__src,uVar5);
                    }
                    iVar9 = iVar9 + 1;
                    puVar12 = puVar12 + uVar5;
                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);
                  local_89c = local_89c + iVar9 * uVar5;
                  iVar7 = iVar7 + local_868 + 1;
                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;
                }
                number_pixels._4_4_ = 0;
                uVar11 = local_868 * (bVar13 + 1);
                number_pixels._0_4_ = uVar11;
                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)
                ;
                uVar6 = (uint)number_pixels;
                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +
                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&
                   (uVar5 + (uint)number_pixels <= image->storage_class)) {
                  memcpy(local_89c,puVar12,(uint)number_pixels);
                }
                local_89c = local_89c + uVar6;
                iVar7 = uVar11 + iVar7 + 1;
              } while (iVar7 < (int)local_878);
            }
LAB_0023e9b8:
            local_850 = local_850 + 1;
            local_840 = local_840 + local_84c;
          } while (local_850 < piVar8[7]);
        }
      }
      RelinquishMagickMemory(pixels);
    }
  }
LAB_0023e9e9:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_88c;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
LAB_0023eb03:
  RelinquishMagickMemory(pixels);
  local_88c = (uchar *)RelinquishMagickMemory(local_88c);
  goto LAB_0023e9e9;
}



void * FUN_0023e640(uint param_1,uint *param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  void *__s;
  uint uVar5;
  void *pvVar6;
  uint uVar7;
  uint extraout_ECX;
  int iVar8;
  int *piVar9;
  int iVar10;
  undefined4 *puVar11;
  void *pvVar12;
  int in_GS_OFFSET;
  byte bVar13;
  undefined8 uVar14;
  void *local_89c;
  void *local_88c;
  uint local_878;
  uint local_868;
  uint local_85c;
  int local_850;
  uint local_84c;
  void *local_840;
  uint local_82c;
  int local_828;
  undefined4 local_820 [512];
  int local_20;
  
  bVar13 = 0;
  uVar14 = FUN_0004c803();
  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);
  uVar3 = (undefined4)uVar14;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar4 = piVar9[6];
  local_84c = uVar4;
  if (param_1 < 9) {
    local_85c = extraout_ECX & 0x7fff;
    local_868 = 1;
  }
  else {
    local_85c = extraout_ECX;
    if (param_1 == 0x10) {
      local_868 = 2;
      local_84c = uVar4 * 2;
    }
    else if (param_1 == 0x20) {
      local_868 = 1;
      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;
    }
    else {
      local_868 = 1;
    }
  }
  if (local_85c == 0) {
    local_85c = local_84c;
  }
  if (*piVar9 == 1) {
    uVar4 = uVar4 << 2;
  }
  uVar4 = uVar4 | 0x8000;
  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);
  if (local_88c != (void *)0x0) {
    iVar8 = piVar9[7];
    *param_2 = iVar8 * uVar4;
    memset(local_88c,0,iVar8 * uVar4);
    __s = (void *)AcquireQuantumMemory(uVar4,2);
    if (__s == (void *)0x0) {
      RelinquishMagickMemory(local_88c);
      local_88c = (void *)0x0;
    }
    else {
      memset(__s,0,uVar4 * 2);
      puVar11 = local_820;
      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {
        *puVar11 = 0;
        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;
      }
      if (local_85c < 8) {
        if (0 < piVar9[7]) {
          iVar8 = 0;
          do {
            local_828 = 0;
            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);
            local_82c = local_85c;
            uVar4 = ReadBlob(uVar3,local_85c,__s);
            if ((local_82c != uVar4) ||
               (pvVar6 = (void *)FUN_0023deb0(&local_82c),
               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;
            iVar8 = iVar8 + 1;
            memcpy(pvVar12,pvVar6,local_82c);
          } while (iVar8 < piVar9[7]);
        }
      }
      else {
        local_850 = 0;
        local_840 = local_88c;
        if (0 < piVar9[7]) {
          do {
            local_89c = local_840;
            if (local_85c < 0xc9) {
              local_878 = ReadBlobByte(uVar3);
            }
            else {
              local_878 = ReadBlobMSBShort(uVar3);
              local_878 = local_878 & 0xffff;
            }
            if (((uVar4 <= local_878) || (local_878 == 0)) ||
               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;
            if (0 < (int)local_878) {
              iVar8 = 0;
              do {
                while( true ) {
                  uVar5 = (int)local_89c - (int)local_88c;
                  bVar13 = *(byte *)((int)__s + iVar8);
                  if (-1 < (char)bVar13) break;
                  local_828 = 0;
                  local_82c = local_868;
                  pvVar6 = (void *)FUN_0023deb0(&local_82c);
                  iVar2 = local_828;
                  uVar1 = local_82c;
                  iVar10 = 0;
                  uVar5 = *param_2;
                  pvVar12 = local_89c;
                  do {
                    uVar7 = (int)pvVar12 - (int)local_88c;
                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&
                       (uVar7 + uVar1 <= uVar5)) {
                      memcpy(pvVar12,pvVar6,uVar1);
                    }
                    iVar10 = iVar10 + 1;
                    pvVar12 = (void *)((int)pvVar12 + uVar1);
                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);
                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);
                  iVar8 = iVar8 + local_868 + 1;
                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;
                }
                local_828 = 0;
                uVar7 = local_868 * (bVar13 + 1);
                local_82c = uVar7;
                pvVar12 = (void *)FUN_0023deb0(&local_82c);
                uVar1 = local_82c;
                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&
                   (uVar5 + local_82c <= *param_2)) {
                  memcpy(local_89c,pvVar12,local_82c);
                }
                local_89c = (void *)((int)local_89c + uVar1);
                iVar8 = uVar7 + iVar8 + 1;
              } while (iVar8 < (int)local_878);
            }
LAB_0023e9b8:
            local_850 = local_850 + 1;
            local_840 = (void *)((int)local_840 + local_84c);
          } while (local_850 < piVar9[7]);
        }
      }
      RelinquishMagickMemory(__s);
    }
  }
LAB_0023e9e9:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_88c;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0029eab0();
LAB_0023eb03:
  RelinquishMagickMemory(__s);
  local_88c = (void *)RelinquishMagickMemory(local_88c);
  goto LAB_0023e9e9;
}


PUSH EBP
PUSH EDI
CALL 0x0004c803
ADD EDI,0x19a9b9
PUSH ESI
PUSH EBX
SUB ESP,0x88c
MOV dword ptr [ESP + 0x48],EAX
MOV EAX,dword ptr [ESP + 0x8a4]
MOV dword ptr [ESP + 0x3c],EDX
MOV dword ptr [ESP + 0x40],ECX
MOV dword ptr [ESP + 0x14],EDI
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x87c],EAX
XOR EAX,EAX
CMP dword ptr [ESP + 0x8a0],0x8
MOV EAX,dword ptr [EDX + 0x18]
JA 0x0023ea10
AND ECX,0x7fff
MOV dword ptr [ESP + 0x50],EAX
MOV dword ptr [ESP + 0x40],ECX
MOV dword ptr [ESP + 0x34],0x1
MOV EDI,dword ptr [ESP + 0x40]
TEST EDI,EDI
CMOVZ EDI,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x40],EDI
MOV EDI,dword ptr [ESP + 0x3c]
CMP dword ptr [EDI],0x1
JNZ 0x0023e6c1
SHL EAX,0x2
OR AH,0x80
SUB ESP,0x8
MOV dword ptr [ESP + 0x70],EAX
MOV EDI,dword ptr [ESP + 0x70]
PUSH EDI
MOV EBP,dword ptr [ESP + 0x48]
PUSH dword ptr [EBP + 0x1c]
MOV ESI,dword ptr [ESP + 0x24]
MOV EBX,ESI
CALL 0x000317b0
MOV dword ptr [ESP + 0x20],EAX
MOV EDX,EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0023e9e9
MOV EAX,dword ptr [EBP + 0x1c]
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x2c]
IMUL EAX,EDI
MOV dword ptr [EBX],EAX
MOV EBX,ESI
PUSH EAX
PUSH 0x0
PUSH EDX
CALL 0x000310a0
POP EDX
POP ECX
PUSH 0x2
PUSH EDI
CALL 0x000317b0
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0023eb7e
MOV EAX,dword ptr [ESP + 0x68]
SUB ESP,0x4
ADD EAX,EAX
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x24]
LEA EDI,[ESP + 0x8c]
CALL 0x000310a0
XOR EAX,EAX
MOV ECX,0x200
MOV dword ptr [ESP + 0x3c],EDI
STOSD.REP ES:EDI
MOV EAX,dword ptr [ESP + 0x4c]
ADD ESP,0x10
CMP dword ptr [ESP + 0x40],0x7
MOV EAX,dword ptr [EAX + 0x1c]
JBE 0x0023ea38
MOV EDI,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x5c],EDI
MOV EDI,dword ptr [ESP + 0x34]
ADD EDI,0x1
TEST EAX,EAX
MOV dword ptr [ESP + 0x6c],EDI
JLE 0x0023e9d6
NOP
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x5c]
CMP dword ptr [ESP + 0x40],0xc8
MOV dword ptr [ESP],EAX
JBE 0x0023eb30
SUB ESP,0xc
PUSH dword ptr [ESP + 0x54]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00033ab0
MOVZX EAX,AX
MOV dword ptr [ESP + 0x34],EAX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x24]
CMP dword ptr [ESP + 0x68],EAX
JBE 0x0023eb03
MOV ESI,EAX
TEST EAX,EAX
JZ 0x0023eb03
SUB ESP,0x4
PUSH dword ptr [ESP + 0x24]
PUSH EAX
PUSH dword ptr [ESP + 0x54]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00033430
ADD ESP,0x10
CMP ESI,EAX
JNZ 0x0023eb03
TEST ESI,ESI
JLE 0x0023e9b8
LEA EAX,[ESP + 0x70]
XOR ESI,ESI
MOV dword ptr [ESP + 0x64],0x0
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x60],EAX
JMP 0x0023e8b3
MOV EDI,dword ptr [ESP + 0x34]
ADD EBX,0x1
MOV dword ptr [ESP + 0x74],0x0
SUB ESP,0xc
IMUL EDI,EBX
MOV dword ptr [ESP + 0x7c],EDI
PUSH dword ptr [ESP + 0x3c]
MOV ECX,dword ptr [ESP + 0x3c]
MOV EDX,dword ptr [ESP + 0x8b0]
CALL 0x0023deb0
MOV ECX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x80]
MOV EBX,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x84]
MOV ESI,dword ptr [ESP + 0x38]
ADD ECX,EAX
MOV dword ptr [ESP + 0x18],ECX
ADC EBX,EDX
MOV dword ptr [ESP + 0x1c],EBX
ADD ESP,0x10
MOV EBX,dword ptr [ESI]
MOV ESI,EAX
CMP dword ptr [ESP + 0xc],0x0
JA 0x0023e8a3
CMP dword ptr [ESP + 0x8],EBX
JA 0x0023e8a3
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00031e30
ADD ESP,0x10
ADD dword ptr [ESP],ESI
LEA ESI,[EDI + EBP*0x1]
CMP dword ptr [ESP + 0x24],ESI
JLE 0x0023e9b8
MOV EAX,dword ptr [ESP + 0x20]
LEA EBP,[ESI + 0x1]
MOV ECX,dword ptr [ESP]
SUB ECX,dword ptr [ESP + 0x10]
MOVZX EBX,byte ptr [EAX + ESI*0x1]
ADD EAX,EBP
MOV dword ptr [ESP + 0x8],ECX
SAR ECX,0x1f
MOV dword ptr [ESP + 0xc],ECX
TEST BL,BL
JNS 0x0023e820
MOV EBP,dword ptr [ESP + 0x64]
SUB ESP,0xc
NOT EBX
MOV EDI,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x80],EBP
XOR EBP,EBP
MOV dword ptr [ESP + 0x7c],EDI
PUSH dword ptr [ESP + 0x3c]
MOV EDX,dword ptr [ESP + 0x8b0]
MOV ECX,dword ptr [ESP + 0x3c]
CALL 0x0023deb0
MOV EDI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x1c],EBP
XOR EBP,EBP
MOV EDX,dword ptr [ESP + 0x84]
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,dword ptr [ESP + 0x80]
MOV EDI,dword ptr [EDI]
MOV dword ptr [ESP + 0x2c],EDX
MOV dword ptr [ESP + 0x28],EAX
MOV EDX,EAX
MOV dword ptr [ESP + 0x64],EAX
MOV dword ptr [ESP + 0x18],EDI
ADD ESP,0x10
MOV ECX,dword ptr [ESP]
MOVZX EDI,BL
ADD EDI,0x2
MOV dword ptr [ESP + 0x58],ESI
MOV ESI,EDI
MOV EDI,ECX
LEA ESI,[ESI]
MOV EAX,EDI
SUB EAX,dword ptr [ESP + 0x10]
MOV EBX,EAX
MOV ECX,EAX
SAR EBX,0x1f
ADD ECX,dword ptr [ESP + 0x18]
ADC EBX,dword ptr [ESP + 0x1c]
CMP EBX,dword ptr [ESP + 0xc]
JA 0x0023e990
JC 0x0023e973
CMP ECX,dword ptr [ESP + 0x8]
JA 0x0023e990
SUB ESP,0x4
PUSH EDX
MOV dword ptr [ESP + 0x40],EDX
PUSH dword ptr [ESP + 0x4c]
PUSH EDI
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00031e30
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x38]
ADD EBP,0x1
ADD EDI,EDX
CMP EBP,ESI
JNZ 0x0023e950
IMUL EBP,dword ptr [ESP + 0x54]
MOV ESI,dword ptr [ESP + 0x58]
ADD dword ptr [ESP],EBP
ADD ESI,dword ptr [ESP + 0x6c]
CMP dword ptr [ESP + 0x24],ESI
JG 0x0023e8b3
NOP
LEA ESI,[ESI]
MOV EDI,dword ptr [ESP + 0x3c]
ADD dword ptr [ESP + 0x4c],0x1
MOV EDX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x4c]
ADD dword ptr [ESP + 0x5c],EDX
CMP dword ptr [EDI + 0x1c],EAX
JG 0x0023e790
SUB ESP,0xc
PUSH dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00033ac8
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x87c]
XOR EDI,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0x10]
JNZ 0x0023ebaf
ADD ESP,0x88c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP dword ptr [ESP + 0x8a0],0x10
JNZ 0x0023eb4c
LEA EDI,[EAX + EAX*0x1]
MOV dword ptr [ESP + 0x34],0x2
MOV dword ptr [ESP + 0x50],EDI
JMP 0x0023e6a6
TEST EAX,EAX
JLE 0x0023e9d6
MOV EAX,dword ptr [ESP + 0x40]
LEA EBP,[ESP + 0x70]
MOV dword ptr [ESP + 0x4],0x0
XOR EDI,EDI
MOV dword ptr [ESP + 0x8],EBP
MOV dword ptr [ESP],EAX
JMP 0x0023eab7
SUB ESP,0xc
MOV EAX,EBP
PUSH dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ESP + 0x3c]
MOV EDX,dword ptr [ESP + 0x8b0]
CALL 0x0023deb0
MOV EBP,dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x80]
MOV ECX,dword ptr [ESP + 0x20]
ADD ESP,0x10
ADD ECX,dword ptr [EBP]
LEA EBX,[ESI + EDX*0x1]
CMP EBX,ECX
JA 0x0023eb03
SUB ESP,0x4
ADD EDI,0x1
PUSH EDX
PUSH EAX
PUSH ESI
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00031e30
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x3c]
CMP dword ptr [EAX + 0x1c],EDI
JLE 0x0023e9d6
MOV EAX,dword ptr [ESP + 0x3c]
SUB ESP,0x4
MOV EDX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [ESP + 0x54]
IMUL ESI,dword ptr [EAX + 0x298]
MOV dword ptr [ESP + 0x74],EDX
MOV dword ptr [ESP + 0x78],ECX
IMUL ESI,EDI
ADD ESI,dword ptr [ESP + 0x14]
MOV EBP,dword ptr [ESP + 0x24]
PUSH EBP
PUSH dword ptr [ESP + 0x48]
PUSH dword ptr [ESP + 0x54]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00033430
ADD ESP,0x10
CMP dword ptr [ESP + 0x70],EAX
JZ 0x0023ea60
SUB ESP,0xc
PUSH dword ptr [ESP + 0x2c]
MOV EDI,dword ptr [ESP + 0x24]
MOV EBX,EDI
CALL 0x00033ac8
POP EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00033ac8
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
JMP 0x0023e9e9
SUB ESP,0xc
PUSH dword ptr [ESP + 0x54]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00030c90
MOV dword ptr [ESP + 0x34],EAX
ADD ESP,0x10
JMP 0x0023e7bf
CMP dword ptr [ESP + 0x8a0],0x20
JNZ 0x0023eb9e
MOV EDI,dword ptr [ESP + 0x3c]
XOR EDX,EDX
MOV dword ptr [ESP + 0x34],0x1
MOV EBX,dword ptr [EDI + 0x294]
TEST EBX,EBX
SETNZ DL
ADD EDX,0x3
IMUL EDX,EAX
MOV dword ptr [ESP + 0x50],EDX
JMP 0x0023e6a6
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00033ac8
ADD ESP,0x10
MOV dword ptr [ESP + 0x10],0x0
JMP 0x0023e9e9
MOV dword ptr [ESP + 0x50],EAX
MOV dword ptr [ESP + 0x34],0x1
JMP 0x0023e6a6
CALL 0x0029eab0
(translation_unit "void * FUN_0023e640(uint param_1,uint *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  void *__s;\n  uint uVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint extraout_ECX;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  void *pvVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  void *local_89c;\n  void *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  void *local_840;\n  uint local_82c;\n  int local_828;\n  undefined4 local_820 [512];\n  int local_20;\n  \n  bVar13 = 0;\n  uVar14 = FUN_0004c803();\n  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);\n  uVar3 = (undefined4)uVar14;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar9[6];\n  local_84c = uVar4;\n  if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);\n  if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }\nLAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\nLAB_0023eb03:\n  RelinquishMagickMemory(__s);\n  local_88c = (void *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}\n\n" (function_definition "void * FUN_0023e640(uint param_1,uint *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  void *__s;\n  uint uVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint extraout_ECX;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  void *pvVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  void *local_89c;\n  void *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  void *local_840;\n  uint local_82c;\n  int local_828;\n  undefined4 local_820 [512];\n  int local_20;\n  \n  bVar13 = 0;\n  uVar14 = FUN_0004c803();\n  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);\n  uVar3 = (undefined4)uVar14;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar9[6];\n  local_84c = uVar4;\n  if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);\n  if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }\nLAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\nLAB_0023eb03:\n  RelinquishMagickMemory(__s);\n  local_88c = (void *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}" primitive_type (pointer_declarator "* FUN_0023e640(uint param_1,uint *param_2)" * (function_declarator "FUN_0023e640(uint param_1,uint *param_2)" identifier (parameter_list "(uint param_1,uint *param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  void *__s;\n  uint uVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint extraout_ECX;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  void *pvVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  void *local_89c;\n  void *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  void *local_840;\n  uint local_82c;\n  int local_828;\n  undefined4 local_820 [512];\n  int local_20;\n  \n  bVar13 = 0;\n  uVar14 = FUN_0004c803();\n  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);\n  uVar3 = (undefined4)uVar14;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar9[6];\n  local_84c = uVar4;\n  if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);\n  if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }\nLAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\nLAB_0023eb03:\n  RelinquishMagickMemory(__s);\n  local_88c = (void *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "void *pvVar12;" primitive_type (pointer_declarator "*pvVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "void *local_89c;" primitive_type (pointer_declarator "*local_89c" * identifier) ;) (declaration "void *local_88c;" primitive_type (pointer_declarator "*local_88c" * identifier) ;) (declaration "uint local_878;" type_identifier identifier ;) (declaration "uint local_868;" type_identifier identifier ;) (declaration "uint local_85c;" type_identifier identifier ;) (declaration "int local_850;" primitive_type identifier ;) (declaration "uint local_84c;" type_identifier identifier ;) (declaration "void *local_840;" primitive_type (pointer_declarator "*local_840" * identifier) ;) (declaration "uint local_82c;" type_identifier identifier ;) (declaration "int local_828;" primitive_type identifier ;) (declaration "undefined4 local_820 [512];" type_identifier (array_declarator "local_820 [512]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = FUN_0004c803();" (assignment_expression "uVar14 = FUN_0004c803()" identifier = (call_expression "FUN_0004c803()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar9 = (int *)((ulonglong)uVar14 >> 0x20);" (assignment_expression "piVar9 = (int *)((ulonglong)uVar14 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar3 = (undefined4)uVar14;" (assignment_expression "uVar3 = (undefined4)uVar14" identifier = (cast_expression "(undefined4)uVar14" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = piVar9[6];" (assignment_expression "uVar4 = piVar9[6]" identifier = (subscript_expression "piVar9[6]" identifier [ number_literal ])) ;) (expression_statement "local_84c = uVar4;" (assignment_expression "local_84c = uVar4" identifier = identifier) ;) (if_statement "if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" if (parenthesized_expression "(param_1 < 9)" ( (binary_expression "param_1 < 9" identifier < number_literal) )) (compound_statement "{\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }" { (expression_statement "local_85c = extraout_ECX & 0x7fff;" (assignment_expression "local_85c = extraout_ECX & 0x7fff" identifier = (binary_expression "extraout_ECX & 0x7fff" identifier & number_literal)) ;) (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" else (compound_statement "{\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" { (expression_statement "local_85c = extraout_ECX;" (assignment_expression "local_85c = extraout_ECX" identifier = identifier) ;) (if_statement "if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" if (parenthesized_expression "(param_1 == 0x10)" ( (binary_expression "param_1 == 0x10" identifier == number_literal) )) (compound_statement "{\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }" { (expression_statement "local_868 = 2;" (assignment_expression "local_868 = 2" identifier = number_literal) ;) (expression_statement "local_84c = uVar4 * 2;" (assignment_expression "local_84c = uVar4 * 2" identifier = (binary_expression "uVar4 * 2" identifier * number_literal)) ;) }) (else_clause "else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" else (if_statement "if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" if (parenthesized_expression "(param_1 == 0x20)" ( (binary_expression "param_1 == 0x20" identifier == number_literal) )) (compound_statement "{\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }" { (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) (expression_statement "local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;" (assignment_expression "local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4" identifier = (binary_expression "((piVar9[0xa5] != 0) + 3) * uVar4" (parenthesized_expression "((piVar9[0xa5] != 0) + 3)" ( (binary_expression "(piVar9[0xa5] != 0) + 3" (parenthesized_expression "(piVar9[0xa5] != 0)" ( (binary_expression "piVar9[0xa5] != 0" (subscript_expression "piVar9[0xa5]" identifier [ number_literal ]) != number_literal) )) + number_literal) )) * identifier)) ;) }) (else_clause "else {\n      local_868 = 1;\n    }" else (compound_statement "{\n      local_868 = 1;\n    }" { (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) }))))) }))) (if_statement "if (local_85c == 0) {\n    local_85c = local_84c;\n  }" if (parenthesized_expression "(local_85c == 0)" ( (binary_expression "local_85c == 0" identifier == number_literal) )) (compound_statement "{\n    local_85c = local_84c;\n  }" { (expression_statement "local_85c = local_84c;" (assignment_expression "local_85c = local_84c" identifier = identifier) ;) })) (if_statement "if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }" if (parenthesized_expression "(*piVar9 == 1)" ( (binary_expression "*piVar9 == 1" (pointer_expression "*piVar9" * identifier) == number_literal) )) (compound_statement "{\n    uVar4 = uVar4 << 2;\n  }" { (expression_statement "uVar4 = uVar4 << 2;" (assignment_expression "uVar4 = uVar4 << 2" identifier = (binary_expression "uVar4 << 2" identifier << number_literal)) ;) })) (expression_statement "uVar4 = uVar4 | 0x8000;" (assignment_expression "uVar4 = uVar4 | 0x8000" identifier = (binary_expression "uVar4 | 0x8000" identifier | number_literal)) ;) (expression_statement "local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);" (assignment_expression "local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4)" identifier = (cast_expression "(void *)AcquireQuantumMemory(piVar9[7],uVar4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(piVar9[7],uVar4)" identifier (argument_list "(piVar9[7],uVar4)" ( (subscript_expression "piVar9[7]" identifier [ number_literal ]) , identifier ))))) ;) (if_statement "if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }" if (parenthesized_expression "(local_88c != (void *)0x0)" ( (binary_expression "local_88c != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }" { (expression_statement "iVar8 = piVar9[7];" (assignment_expression "iVar8 = piVar9[7]" identifier = (subscript_expression "piVar9[7]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = iVar8 * uVar4;" (assignment_expression "*param_2 = iVar8 * uVar4" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar8 * uVar4" identifier * identifier)) ;) (expression_statement "memset(local_88c,0,iVar8 * uVar4);" (call_expression "memset(local_88c,0,iVar8 * uVar4)" identifier (argument_list "(local_88c,0,iVar8 * uVar4)" ( identifier , number_literal , (binary_expression "iVar8 * uVar4" identifier * identifier) ))) ;) (expression_statement "__s = (void *)AcquireQuantumMemory(uVar4,2);" (assignment_expression "__s = (void *)AcquireQuantumMemory(uVar4,2)" identifier = (cast_expression "(void *)AcquireQuantumMemory(uVar4,2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(uVar4,2)" identifier (argument_list "(uVar4,2)" ( identifier , number_literal ))))) ;) (if_statement "if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }" { (expression_statement "RelinquishMagickMemory(local_88c);" (call_expression "RelinquishMagickMemory(local_88c)" identifier (argument_list "(local_88c)" ( identifier ))) ;) (expression_statement "local_88c = (void *)0x0;" (assignment_expression "local_88c = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" else (compound_statement "{\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" { (expression_statement "memset(__s,0,uVar4 * 2);" (call_expression "memset(__s,0,uVar4 * 2)" identifier (argument_list "(__s,0,uVar4 * 2)" ( identifier , number_literal , (binary_expression "uVar4 * 2" identifier * number_literal) ))) ;) (expression_statement "puVar11 = local_820;" (assignment_expression "puVar11 = local_820" identifier = identifier) ;) (for_statement "for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }" for ( (assignment_expression "iVar8 = 0x200" identifier = number_literal) ; (binary_expression "iVar8 != 0" identifier != number_literal) ; (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ) (compound_statement "{\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar13 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar13 * -2 + 1" (binary_expression "puVar11 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (if_statement "if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" if (parenthesized_expression "(local_85c < 8)" ( (binary_expression "local_85c < 8" identifier < number_literal) )) (compound_statement "{\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }" { (if_statement "if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }" if (parenthesized_expression "(0 < piVar9[7])" ( (binary_expression "0 < piVar9[7]" number_literal < (subscript_expression "piVar9[7]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);" do (compound_statement "{\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          }" { (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" identifier = number_literal) ;) (expression_statement "pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);" (assignment_expression "pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" identifier = (cast_expression "(void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" ( (binary_expression "local_84c * piVar9[0xa6] * iVar8 + (int)local_88c" (binary_expression "local_84c * piVar9[0xa6] * iVar8" (binary_expression "local_84c * piVar9[0xa6]" identifier * (subscript_expression "piVar9[0xa6]" identifier [ number_literal ])) * identifier) + (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_82c = local_85c;" (assignment_expression "local_82c = local_85c" identifier = identifier) ;) (expression_statement "uVar4 = ReadBlob(uVar3,local_85c,__s);" (assignment_expression "uVar4 = ReadBlob(uVar3,local_85c,__s)" identifier = (call_expression "ReadBlob(uVar3,local_85c,__s)" identifier (argument_list "(uVar3,local_85c,__s)" ( identifier , identifier , identifier )))) ;) (if_statement "if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;" if (parenthesized_expression "((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c))" ( (binary_expression "(local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)" (parenthesized_expression "(local_82c != uVar4)" ( (binary_expression "local_82c != uVar4" identifier != identifier) )) || (parenthesized_expression "(pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)" ( (comma_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c" (assignment_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c)" identifier = (cast_expression "(void *)FUN_0023deb0(&local_82c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0023deb0(&local_82c)" identifier (argument_list "(&local_82c)" ( (pointer_expression "&local_82c" & identifier) ))))) , (binary_expression "(int)local_88c + *param_2 < (int)pvVar12 + local_82c" (binary_expression "(int)local_88c + *param_2" (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*param_2" * identifier)) < (binary_expression "(int)pvVar12 + local_82c" (cast_expression "(int)pvVar12" ( (type_descriptor "int" primitive_type) ) identifier) + identifier))) ))) )) (goto_statement "goto LAB_0023eb03;" goto statement_identifier ;)) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "memcpy(pvVar12,pvVar6,local_82c);" (call_expression "memcpy(pvVar12,pvVar6,local_82c)" identifier (argument_list "(pvVar12,pvVar6,local_82c)" ( identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "(iVar8 < piVar9[7])" ( (binary_expression "iVar8 < piVar9[7]" identifier < (subscript_expression "piVar9[7]" identifier [ number_literal ])) )) ;) })) }) (else_clause "else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" else (compound_statement "{\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" { (expression_statement "local_850 = 0;" (assignment_expression "local_850 = 0" identifier = number_literal) ;) (expression_statement "local_840 = local_88c;" (assignment_expression "local_840 = local_88c" identifier = identifier) ;) (if_statement "if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }" if (parenthesized_expression "(0 < piVar9[7])" ( (binary_expression "0 < piVar9[7]" number_literal < (subscript_expression "piVar9[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }" { (do_statement "do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);" do (compound_statement "{\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          }" { (expression_statement "local_89c = local_840;" (assignment_expression "local_89c = local_840" identifier = identifier) ;) (if_statement "if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" if (parenthesized_expression "(local_85c < 0xc9)" ( (binary_expression "local_85c < 0xc9" identifier < number_literal) )) (compound_statement "{\n              local_878 = ReadBlobByte(uVar3);\n            }" { (expression_statement "local_878 = ReadBlobByte(uVar3);" (assignment_expression "local_878 = ReadBlobByte(uVar3)" identifier = (call_expression "ReadBlobByte(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) }) (else_clause "else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" else (compound_statement "{\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" { (expression_statement "local_878 = ReadBlobMSBShort(uVar3);" (assignment_expression "local_878 = ReadBlobMSBShort(uVar3)" identifier = (call_expression "ReadBlobMSBShort(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "local_878 = local_878 & 0xffff;" (assignment_expression "local_878 = local_878 & 0xffff" identifier = (binary_expression "local_878 & 0xffff" identifier & number_literal)) ;) }))) (if_statement "if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;" if (parenthesized_expression "(((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5))" ( (binary_expression "((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)" (parenthesized_expression "((uVar4 <= local_878) || (local_878 == 0))" ( (binary_expression "(uVar4 <= local_878) || (local_878 == 0)" (parenthesized_expression "(uVar4 <= local_878)" ( (binary_expression "uVar4 <= local_878" identifier <= identifier) )) || (parenthesized_expression "(local_878 == 0)" ( (binary_expression "local_878 == 0" identifier == number_literal) ))) )) || (parenthesized_expression "(uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)" ( (comma_expression "uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5" (assignment_expression "uVar5 = ReadBlob(uVar3,local_878,__s)" identifier = (call_expression "ReadBlob(uVar3,local_878,__s)" identifier (argument_list "(uVar3,local_878,__s)" ( identifier , identifier , identifier )))) , (binary_expression "local_878 != uVar5" identifier != identifier)) ))) )) (goto_statement "goto LAB_0023eb03;" goto statement_identifier ;)) (if_statement "if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }" if (parenthesized_expression "(0 < (int)local_878)" ( (binary_expression "0 < (int)local_878" number_literal < (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);" do (compound_statement "{\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              }" { (while_statement "while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }" { (expression_statement "uVar5 = (int)local_89c - (int)local_88c;" (assignment_expression "uVar5 = (int)local_89c - (int)local_88c" identifier = (binary_expression "(int)local_89c - (int)local_88c" (cast_expression "(int)local_89c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "bVar13 = *(byte *)((int)__s + iVar8);" (assignment_expression "bVar13 = *(byte *)((int)__s + iVar8)" identifier = (pointer_expression "*(byte *)((int)__s + iVar8)" * (cast_expression "(byte *)((int)__s + iVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + iVar8)" ( (binary_expression "(int)__s + iVar8" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (-1 < (char)bVar13) break;" if (parenthesized_expression "(-1 < (char)bVar13)" ( (binary_expression "-1 < (char)bVar13" number_literal < (cast_expression "(char)bVar13" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" identifier = number_literal) ;) (expression_statement "local_82c = local_868;" (assignment_expression "local_82c = local_868" identifier = identifier) ;) (expression_statement "pvVar6 = (void *)FUN_0023deb0(&local_82c);" (assignment_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c)" identifier = (cast_expression "(void *)FUN_0023deb0(&local_82c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0023deb0(&local_82c)" identifier (argument_list "(&local_82c)" ( (pointer_expression "&local_82c" & identifier) ))))) ;) (expression_statement "iVar2 = local_828;" (assignment_expression "iVar2 = local_828" identifier = identifier) ;) (expression_statement "uVar1 = local_82c;" (assignment_expression "uVar1 = local_82c" identifier = identifier) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "pvVar12 = local_89c;" (assignment_expression "pvVar12 = local_89c" identifier = identifier) ;) (do_statement "do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);" do (compound_statement "{\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  }" { (expression_statement "uVar7 = (int)pvVar12 - (int)local_88c;" (assignment_expression "uVar7 = (int)pvVar12 - (int)local_88c" identifier = (binary_expression "(int)pvVar12 - (int)local_88c" (cast_expression "(int)pvVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }" if (parenthesized_expression "((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5))" ( (binary_expression "(((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)" (parenthesized_expression "(((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0)" ( (binary_expression "((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0" (binary_expression "((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1)" (binary_expression "((int)uVar7 >> 0x1f) + iVar2" (parenthesized_expression "((int)uVar7 >> 0x1f)" ( (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar7,uVar1)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar7,uVar1)" identifier (argument_list "(uVar7,uVar1)" ( identifier , identifier ))))) == number_literal) )) && (parenthesized_expression "(uVar7 + uVar1 <= uVar5)" ( (binary_expression "uVar7 + uVar1 <= uVar5" (binary_expression "uVar7 + uVar1" identifier + identifier) <= identifier) ))) )) (compound_statement "{\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }" { (expression_statement "memcpy(pvVar12,pvVar6,uVar1);" (call_expression "memcpy(pvVar12,pvVar6,uVar1)" identifier (argument_list "(pvVar12,pvVar6,uVar1)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "pvVar12 = (void *)((int)pvVar12 + uVar1);" (assignment_expression "pvVar12 = (void *)((int)pvVar12 + uVar1)" identifier = (cast_expression "(void *)((int)pvVar12 + uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar12 + uVar1)" ( (binary_expression "(int)pvVar12 + uVar1" (cast_expression "(int)pvVar12" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(iVar10 != (~(uint)bVar13 & 0xff) + 2)" ( (binary_expression "iVar10 != (~(uint)bVar13 & 0xff) + 2" identifier != (binary_expression "(~(uint)bVar13 & 0xff) + 2" (parenthesized_expression "(~(uint)bVar13 & 0xff)" ( (binary_expression "~(uint)bVar13 & 0xff" (unary_expression "~(uint)bVar13" ~ (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) + number_literal)) )) ;) (expression_statement "local_89c = (void *)((int)local_89c + iVar10 * uVar1);" (assignment_expression "local_89c = (void *)((int)local_89c + iVar10 * uVar1)" identifier = (cast_expression "(void *)((int)local_89c + iVar10 * uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_89c + iVar10 * uVar1)" ( (binary_expression "(int)local_89c + iVar10 * uVar1" (cast_expression "(int)local_89c" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar10 * uVar1" identifier * identifier)) )))) ;) (expression_statement "iVar8 = iVar8 + local_868 + 1;" (assignment_expression "iVar8 = iVar8 + local_868 + 1" identifier = (binary_expression "iVar8 + local_868 + 1" (binary_expression "iVar8 + local_868" identifier + identifier) + number_literal)) ;) (if_statement "if ((int)local_878 <= iVar8) goto LAB_0023e9b8;" if (parenthesized_expression "((int)local_878 <= iVar8)" ( (binary_expression "(int)local_878 <= iVar8" (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_0023e9b8;" goto statement_identifier ;)) })) (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = local_868 * (bVar13 + 1);" (assignment_expression "uVar7 = local_868 * (bVar13 + 1)" identifier = (binary_expression "local_868 * (bVar13 + 1)" identifier * (parenthesized_expression "(bVar13 + 1)" ( (binary_expression "bVar13 + 1" identifier + number_literal) )))) ;) (expression_statement "local_82c = uVar7;" (assignment_expression "local_82c = uVar7" identifier = identifier) ;) (expression_statement "pvVar12 = (void *)FUN_0023deb0(&local_82c);" (assignment_expression "pvVar12 = (void *)FUN_0023deb0(&local_82c)" identifier = (cast_expression "(void *)FUN_0023deb0(&local_82c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0023deb0(&local_82c)" identifier (argument_list "(&local_82c)" ( (pointer_expression "&local_82c" & identifier) ))))) ;) (expression_statement "uVar1 = local_82c;" (assignment_expression "uVar1 = local_82c" identifier = identifier) ;) (if_statement "if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }" if (parenthesized_expression "((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2))" ( (binary_expression "(((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)" (parenthesized_expression "(((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0)" ( (binary_expression "((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0" (binary_expression "((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c)" (binary_expression "((int)uVar5 >> 0x1f) + local_828" (parenthesized_expression "((int)uVar5 >> 0x1f)" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar5,local_82c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,local_82c)" identifier (argument_list "(uVar5,local_82c)" ( identifier , identifier ))))) == number_literal) )) && (parenthesized_expression "(uVar5 + local_82c <= *param_2)" ( (binary_expression "uVar5 + local_82c <= *param_2" (binary_expression "uVar5 + local_82c" identifier + identifier) <= (pointer_expression "*param_2" * identifier)) ))) )) (compound_statement "{\n                  memcpy(local_89c,pvVar12,local_82c);\n                }" { (expression_statement "memcpy(local_89c,pvVar12,local_82c);" (call_expression "memcpy(local_89c,pvVar12,local_82c)" identifier (argument_list "(local_89c,pvVar12,local_82c)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "local_89c = (void *)((int)local_89c + uVar1);" (assignment_expression "local_89c = (void *)((int)local_89c + uVar1)" identifier = (cast_expression "(void *)((int)local_89c + uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_89c + uVar1)" ( (binary_expression "(int)local_89c + uVar1" (cast_expression "(int)local_89c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar8 = uVar7 + iVar8 + 1;" (assignment_expression "iVar8 = uVar7 + iVar8 + 1" identifier = (binary_expression "uVar7 + iVar8 + 1" (binary_expression "uVar7 + iVar8" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(iVar8 < (int)local_878)" ( (binary_expression "iVar8 < (int)local_878" identifier < (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_0023e9b8:\n            local_850 = local_850 + 1;" statement_identifier : (expression_statement "local_850 = local_850 + 1;" (assignment_expression "local_850 = local_850 + 1" identifier = (binary_expression "local_850 + 1" identifier + number_literal)) ;)) (expression_statement "local_840 = (void *)((int)local_840 + local_84c);" (assignment_expression "local_840 = (void *)((int)local_840 + local_84c)" identifier = (cast_expression "(void *)((int)local_840 + local_84c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_840 + local_84c)" ( (binary_expression "(int)local_840 + local_84c" (cast_expression "(int)local_840" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(local_850 < piVar9[7])" ( (binary_expression "local_850 < piVar9[7]" identifier < (subscript_expression "piVar9[7]" identifier [ number_literal ])) )) ;) })) }))) (expression_statement "RelinquishMagickMemory(__s);" (call_expression "RelinquishMagickMemory(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }))) })) (labeled_statement "LAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_88c;\n  }" { (return_statement "return local_88c;" return identifier ;) }))) comment (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0023eb03:\n  RelinquishMagickMemory(__s);" statement_identifier : (expression_statement "RelinquishMagickMemory(__s);" (call_expression "RelinquishMagickMemory(__s)" identifier (argument_list "(__s)" ( identifier ))) ;)) (expression_statement "local_88c = (void *)RelinquishMagickMemory(local_88c);" (assignment_expression "local_88c = (void *)RelinquishMagickMemory(local_88c)" identifier = (cast_expression "(void *)RelinquishMagickMemory(local_88c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "RelinquishMagickMemory(local_88c)" identifier (argument_list "(local_88c)" ( identifier ))))) ;) (goto_statement "goto LAB_0023e9e9;" goto statement_identifier ;) })))
(translation_unit "/* 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\nuchar * DecodeImage(Image *blob,Image *image,size_t bytes_per_line,uint bits_per_pixel,\n                   size_t *extent)\n\n{\n  int iVar1;\n  ClassType CVar2;\n  ushort uVar3;\n  Image *image_00;\n  uint uVar4;\n  uchar *pixels;\n  uint uVar5;\n  uchar *__src;\n  uint uVar6;\n  uint extraout_ECX;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uchar *puVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  uchar *local_89c;\n  uchar *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  uchar *local_840;\n  MagickSizeType number_pixels;\n  uchar unpack_buffer [2048];\n  \n  bVar13 = 0;\n  uVar14 = __x86_get_pc_thunk_di();\n  piVar8 = (int *)((ulonglong)uVar14 >> 0x20);\n  image_00 = (Image *)uVar14;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar8[6];\n  local_84c = uVar4;\n  if (blob < (Image *)0x9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (blob == (Image *)0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar8 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (uchar *)AcquireQuantumMemory(piVar8[7],uVar4);\n  if (local_88c != (uchar *)0x0) {\n    iVar7 = piVar8[7];\n    image->storage_class = iVar7 * uVar4;\n    memset(local_88c,0,iVar7 * uVar4);\n    pixels = (uchar *)AcquireQuantumMemory(uVar4,2);\n    if (pixels == (uchar *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (uchar *)0x0;\n    }\n    else {\n      memset(pixels,0,uVar4 * 2);\n      puVar12 = unpack_buffer;\n      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }\n      RelinquishMagickMemory(pixels);\n    }\n  }\nLAB_0023e9e9:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_0023eb03:\n  RelinquishMagickMemory(pixels);\n  local_88c = (uchar *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}\n\n" comment comment comment comment (function_definition "uchar * DecodeImage(Image *blob,Image *image,size_t bytes_per_line,uint bits_per_pixel,\n                   size_t *extent)\n\n{\n  int iVar1;\n  ClassType CVar2;\n  ushort uVar3;\n  Image *image_00;\n  uint uVar4;\n  uchar *pixels;\n  uint uVar5;\n  uchar *__src;\n  uint uVar6;\n  uint extraout_ECX;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uchar *puVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  uchar *local_89c;\n  uchar *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  uchar *local_840;\n  MagickSizeType number_pixels;\n  uchar unpack_buffer [2048];\n  \n  bVar13 = 0;\n  uVar14 = __x86_get_pc_thunk_di();\n  piVar8 = (int *)((ulonglong)uVar14 >> 0x20);\n  image_00 = (Image *)uVar14;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar8[6];\n  local_84c = uVar4;\n  if (blob < (Image *)0x9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (blob == (Image *)0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar8 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (uchar *)AcquireQuantumMemory(piVar8[7],uVar4);\n  if (local_88c != (uchar *)0x0) {\n    iVar7 = piVar8[7];\n    image->storage_class = iVar7 * uVar4;\n    memset(local_88c,0,iVar7 * uVar4);\n    pixels = (uchar *)AcquireQuantumMemory(uVar4,2);\n    if (pixels == (uchar *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (uchar *)0x0;\n    }\n    else {\n      memset(pixels,0,uVar4 * 2);\n      puVar12 = unpack_buffer;\n      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }\n      RelinquishMagickMemory(pixels);\n    }\n  }\nLAB_0023e9e9:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_0023eb03:\n  RelinquishMagickMemory(pixels);\n  local_88c = (uchar *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}" type_identifier (pointer_declarator "* DecodeImage(Image *blob,Image *image,size_t bytes_per_line,uint bits_per_pixel,\n                   size_t *extent)" * (function_declarator "DecodeImage(Image *blob,Image *image,size_t bytes_per_line,uint bits_per_pixel,\n                   size_t *extent)" identifier (parameter_list "(Image *blob,Image *image,size_t bytes_per_line,uint bits_per_pixel,\n                   size_t *extent)" ( (parameter_declaration "Image *blob" type_identifier (pointer_declarator "*blob" * identifier)) , (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "size_t bytes_per_line" primitive_type identifier) , (parameter_declaration "uint bits_per_pixel" type_identifier identifier) , (parameter_declaration "size_t *extent" primitive_type (pointer_declarator "*extent" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  ClassType CVar2;\n  ushort uVar3;\n  Image *image_00;\n  uint uVar4;\n  uchar *pixels;\n  uint uVar5;\n  uchar *__src;\n  uint uVar6;\n  uint extraout_ECX;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uchar *puVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  uchar *local_89c;\n  uchar *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  uchar *local_840;\n  MagickSizeType number_pixels;\n  uchar unpack_buffer [2048];\n  \n  bVar13 = 0;\n  uVar14 = __x86_get_pc_thunk_di();\n  piVar8 = (int *)((ulonglong)uVar14 >> 0x20);\n  image_00 = (Image *)uVar14;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar8[6];\n  local_84c = uVar4;\n  if (blob < (Image *)0x9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (blob == (Image *)0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar8 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (uchar *)AcquireQuantumMemory(piVar8[7],uVar4);\n  if (local_88c != (uchar *)0x0) {\n    iVar7 = piVar8[7];\n    image->storage_class = iVar7 * uVar4;\n    memset(local_88c,0,iVar7 * uVar4);\n    pixels = (uchar *)AcquireQuantumMemory(uVar4,2);\n    if (pixels == (uchar *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (uchar *)0x0;\n    }\n    else {\n      memset(pixels,0,uVar4 * 2);\n      puVar12 = unpack_buffer;\n      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }\n      RelinquishMagickMemory(pixels);\n    }\n  }\nLAB_0023e9e9:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_0023eb03:\n  RelinquishMagickMemory(pixels);\n  local_88c = (uchar *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ClassType CVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "Image *image_00;" type_identifier (pointer_declarator "*image_00" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uchar *pixels;" type_identifier (pointer_declarator "*pixels" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uchar *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uchar *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "uchar *local_89c;" type_identifier (pointer_declarator "*local_89c" * identifier) ;) (declaration "uchar *local_88c;" type_identifier (pointer_declarator "*local_88c" * identifier) ;) (declaration "uint local_878;" type_identifier identifier ;) (declaration "uint local_868;" type_identifier identifier ;) (declaration "uint local_85c;" type_identifier identifier ;) (declaration "int local_850;" primitive_type identifier ;) (declaration "uint local_84c;" type_identifier identifier ;) (declaration "uchar *local_840;" type_identifier (pointer_declarator "*local_840" * identifier) ;) (declaration "MagickSizeType number_pixels;" type_identifier identifier ;) (declaration "uchar unpack_buffer [2048];" type_identifier (array_declarator "unpack_buffer [2048]" identifier [ number_literal ]) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = __x86_get_pc_thunk_di();" (assignment_expression "uVar14 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar8 = (int *)((ulonglong)uVar14 >> 0x20);" (assignment_expression "piVar8 = (int *)((ulonglong)uVar14 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "image_00 = (Image *)uVar14;" (assignment_expression "image_00 = (Image *)uVar14" identifier = (cast_expression "(Image *)uVar14" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = piVar8[6];" (assignment_expression "uVar4 = piVar8[6]" identifier = (subscript_expression "piVar8[6]" identifier [ number_literal ])) ;) (expression_statement "local_84c = uVar4;" (assignment_expression "local_84c = uVar4" identifier = identifier) ;) (if_statement "if (blob < (Image *)0x9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (blob == (Image *)0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" if (parenthesized_expression "(blob < (Image *)0x9)" ( (binary_expression "blob < (Image *)0x9" identifier < (cast_expression "(Image *)0x9" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }" { (expression_statement "local_85c = extraout_ECX & 0x7fff;" (assignment_expression "local_85c = extraout_ECX & 0x7fff" identifier = (binary_expression "extraout_ECX & 0x7fff" identifier & number_literal)) ;) (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_85c = extraout_ECX;\n    if (blob == (Image *)0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" else (compound_statement "{\n    local_85c = extraout_ECX;\n    if (blob == (Image *)0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" { (expression_statement "local_85c = extraout_ECX;" (assignment_expression "local_85c = extraout_ECX" identifier = identifier) ;) (if_statement "if (blob == (Image *)0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" if (parenthesized_expression "(blob == (Image *)0x10)" ( (binary_expression "blob == (Image *)0x10" identifier == (cast_expression "(Image *)0x10" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }" { (expression_statement "local_868 = 2;" (assignment_expression "local_868 = 2" identifier = number_literal) ;) (expression_statement "local_84c = uVar4 * 2;" (assignment_expression "local_84c = uVar4 * 2" identifier = (binary_expression "uVar4 * 2" identifier * number_literal)) ;) }) (else_clause "else if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" else (if_statement "if (blob == (Image *)0x20) {\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" if (parenthesized_expression "(blob == (Image *)0x20)" ( (binary_expression "blob == (Image *)0x20" identifier == (cast_expression "(Image *)0x20" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_868 = 1;\n      local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;\n    }" { (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) (expression_statement "local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4;" (assignment_expression "local_84c = ((piVar8[0xa5] != 0) + 3) * uVar4" identifier = (binary_expression "((piVar8[0xa5] != 0) + 3) * uVar4" (parenthesized_expression "((piVar8[0xa5] != 0) + 3)" ( (binary_expression "(piVar8[0xa5] != 0) + 3" (parenthesized_expression "(piVar8[0xa5] != 0)" ( (binary_expression "piVar8[0xa5] != 0" (subscript_expression "piVar8[0xa5]" identifier [ number_literal ]) != number_literal) )) + number_literal) )) * identifier)) ;) }) (else_clause "else {\n      local_868 = 1;\n    }" else (compound_statement "{\n      local_868 = 1;\n    }" { (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) }))))) }))) (if_statement "if (local_85c == 0) {\n    local_85c = local_84c;\n  }" if (parenthesized_expression "(local_85c == 0)" ( (binary_expression "local_85c == 0" identifier == number_literal) )) (compound_statement "{\n    local_85c = local_84c;\n  }" { (expression_statement "local_85c = local_84c;" (assignment_expression "local_85c = local_84c" identifier = identifier) ;) })) (if_statement "if (*piVar8 == 1) {\n    uVar4 = uVar4 << 2;\n  }" if (parenthesized_expression "(*piVar8 == 1)" ( (binary_expression "*piVar8 == 1" (pointer_expression "*piVar8" * identifier) == number_literal) )) (compound_statement "{\n    uVar4 = uVar4 << 2;\n  }" { (expression_statement "uVar4 = uVar4 << 2;" (assignment_expression "uVar4 = uVar4 << 2" identifier = (binary_expression "uVar4 << 2" identifier << number_literal)) ;) })) (expression_statement "uVar4 = uVar4 | 0x8000;" (assignment_expression "uVar4 = uVar4 | 0x8000" identifier = (binary_expression "uVar4 | 0x8000" identifier | number_literal)) ;) (expression_statement "local_88c = (uchar *)AcquireQuantumMemory(piVar8[7],uVar4);" (assignment_expression "local_88c = (uchar *)AcquireQuantumMemory(piVar8[7],uVar4)" identifier = (cast_expression "(uchar *)AcquireQuantumMemory(piVar8[7],uVar4)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(piVar8[7],uVar4)" identifier (argument_list "(piVar8[7],uVar4)" ( (subscript_expression "piVar8[7]" identifier [ number_literal ]) , identifier ))))) ;) (if_statement "if (local_88c != (uchar *)0x0) {\n    iVar7 = piVar8[7];\n    image->storage_class = iVar7 * uVar4;\n    memset(local_88c,0,iVar7 * uVar4);\n    pixels = (uchar *)AcquireQuantumMemory(uVar4,2);\n    if (pixels == (uchar *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (uchar *)0x0;\n    }\n    else {\n      memset(pixels,0,uVar4 * 2);\n      puVar12 = unpack_buffer;\n      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }\n      RelinquishMagickMemory(pixels);\n    }\n  }" if (parenthesized_expression "(local_88c != (uchar *)0x0)" ( (binary_expression "local_88c != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar7 = piVar8[7];\n    image->storage_class = iVar7 * uVar4;\n    memset(local_88c,0,iVar7 * uVar4);\n    pixels = (uchar *)AcquireQuantumMemory(uVar4,2);\n    if (pixels == (uchar *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (uchar *)0x0;\n    }\n    else {\n      memset(pixels,0,uVar4 * 2);\n      puVar12 = unpack_buffer;\n      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }\n      RelinquishMagickMemory(pixels);\n    }\n  }" { (expression_statement "iVar7 = piVar8[7];" (assignment_expression "iVar7 = piVar8[7]" identifier = (subscript_expression "piVar8[7]" identifier [ number_literal ])) ;) (expression_statement "image->storage_class = iVar7 * uVar4;" (assignment_expression "image->storage_class = iVar7 * uVar4" (field_expression "image->storage_class" identifier -> field_identifier) = (binary_expression "iVar7 * uVar4" identifier * identifier)) ;) (expression_statement "memset(local_88c,0,iVar7 * uVar4);" (call_expression "memset(local_88c,0,iVar7 * uVar4)" identifier (argument_list "(local_88c,0,iVar7 * uVar4)" ( identifier , number_literal , (binary_expression "iVar7 * uVar4" identifier * identifier) ))) ;) (expression_statement "pixels = (uchar *)AcquireQuantumMemory(uVar4,2);" (assignment_expression "pixels = (uchar *)AcquireQuantumMemory(uVar4,2)" identifier = (cast_expression "(uchar *)AcquireQuantumMemory(uVar4,2)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(uVar4,2)" identifier (argument_list "(uVar4,2)" ( identifier , number_literal ))))) ;) (if_statement "if (pixels == (uchar *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (uchar *)0x0;\n    }\n    else {\n      memset(pixels,0,uVar4 * 2);\n      puVar12 = unpack_buffer;\n      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }\n      RelinquishMagickMemory(pixels);\n    }" if (parenthesized_expression "(pixels == (uchar *)0x0)" ( (binary_expression "pixels == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      RelinquishMagickMemory(local_88c);\n      local_88c = (uchar *)0x0;\n    }" { (expression_statement "RelinquishMagickMemory(local_88c);" (call_expression "RelinquishMagickMemory(local_88c)" identifier (argument_list "(local_88c)" ( identifier ))) ;) (expression_statement "local_88c = (uchar *)0x0;" (assignment_expression "local_88c = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      memset(pixels,0,uVar4 * 2);\n      puVar12 = unpack_buffer;\n      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }\n      RelinquishMagickMemory(pixels);\n    }" else (compound_statement "{\n      memset(pixels,0,uVar4 * 2);\n      puVar12 = unpack_buffer;\n      for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }\n      RelinquishMagickMemory(pixels);\n    }" { (expression_statement "memset(pixels,0,uVar4 * 2);" (call_expression "memset(pixels,0,uVar4 * 2)" identifier (argument_list "(pixels,0,uVar4 * 2)" ( identifier , number_literal , (binary_expression "uVar4 * 2" identifier * number_literal) ))) ;) (expression_statement "puVar12 = unpack_buffer;" (assignment_expression "puVar12 = unpack_buffer" identifier = identifier) ;) (for_statement "for (iVar7 = 0x200; iVar7 != 0; iVar7 = iVar7 + -1) {\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }" for ( (assignment_expression "iVar7 = 0x200" identifier = number_literal) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ) (compound_statement "{\n        puVar12[0] = '\0';\n        puVar12[1] = '\0';\n        puVar12[2] = '\0';\n        puVar12[3] = '\0';\n        puVar12 = puVar12 + (uint)bVar13 * -8 + 4;\n      }" { (expression_statement "puVar12[0] = '\0';" (assignment_expression "puVar12[0] = '\0'" (subscript_expression "puVar12[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar12[1] = '\0';" (assignment_expression "puVar12[1] = '\0'" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar12[2] = '\0';" (assignment_expression "puVar12[2] = '\0'" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar12[3] = '\0';" (assignment_expression "puVar12[3] = '\0'" (subscript_expression "puVar12[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar12 = puVar12 + (uint)bVar13 * -8 + 4;" (assignment_expression "puVar12 = puVar12 + (uint)bVar13 * -8 + 4" identifier = (binary_expression "puVar12 + (uint)bVar13 * -8 + 4" (binary_expression "puVar12 + (uint)bVar13 * -8" identifier + (binary_expression "(uint)bVar13 * -8" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (if_statement "if (local_85c < 8) {\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }" if (parenthesized_expression "(local_85c < 8)" ( (binary_expression "local_85c < 8" identifier < number_literal) )) (compound_statement "{\n        if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }\n      }" { (if_statement "if (0 < piVar8[7]) {\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }" if (parenthesized_expression "(0 < piVar8[7])" ( (binary_expression "0 < piVar8[7]" number_literal < (subscript_expression "piVar8[7]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar7 = 0;\n          do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);\n        }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          } while (iVar7 < piVar8[7]);" do (compound_statement "{\n            number_pixels._4_4_ = 0;\n            iVar10 = local_84c * piVar8[0xa6] * iVar7;\n            number_pixels._0_4_ = local_85c;\n            uVar4 = ReadBlob(image_00,local_85c,pixels);\n            if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;\n            iVar7 = iVar7 + 1;\n            memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);\n          }" { (expression_statement "number_pixels._4_4_ = 0;" (assignment_expression "number_pixels._4_4_ = 0" (field_expression "number_pixels._4_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar10 = local_84c * piVar8[0xa6] * iVar7;" (assignment_expression "iVar10 = local_84c * piVar8[0xa6] * iVar7" identifier = (binary_expression "local_84c * piVar8[0xa6] * iVar7" (binary_expression "local_84c * piVar8[0xa6]" identifier * (subscript_expression "piVar8[0xa6]" identifier [ number_literal ])) * identifier)) ;) (expression_statement "number_pixels._0_4_ = local_85c;" (assignment_expression "number_pixels._0_4_ = local_85c" (field_expression "number_pixels._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "uVar4 = ReadBlob(image_00,local_85c,pixels);" (assignment_expression "uVar4 = ReadBlob(image_00,local_85c,pixels)" identifier = (call_expression "ReadBlob(image_00,local_85c,pixels)" identifier (argument_list "(image_00,local_85c,pixels)" ( identifier , identifier , identifier )))) ;) (if_statement "if (((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))\n            goto LAB_0023eb03;" if (parenthesized_expression "(((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels))" ( (binary_expression "((uint)number_pixels != uVar4) ||\n               (puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels)" (parenthesized_expression "((uint)number_pixels != uVar4)" ( (binary_expression "(uint)number_pixels != uVar4" (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier) != identifier) )) || (parenthesized_expression "(puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels)" ( (comma_expression "puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels),\n               local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels" (assignment_expression "puVar12 = UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels)" identifier = (call_expression "UnpackScanline(pixels,(uint)blob,unpack_buffer,&number_pixels)" identifier (argument_list "(pixels,(uint)blob,unpack_buffer,&number_pixels)" ( identifier , (cast_expression "(uint)blob" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , (pointer_expression "&number_pixels" & identifier) )))) , (binary_expression "local_88c + image->storage_class < local_88c + iVar10 + (uint)number_pixels" (binary_expression "local_88c + image->storage_class" identifier + (field_expression "image->storage_class" identifier -> field_identifier)) < (binary_expression "local_88c + iVar10 + (uint)number_pixels" (binary_expression "local_88c + iVar10" identifier + identifier) + (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier)))) ))) )) (goto_statement "goto LAB_0023eb03;" goto statement_identifier ;)) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "memcpy(local_88c + iVar10,puVar12,(uint)number_pixels);" (call_expression "memcpy(local_88c + iVar10,puVar12,(uint)number_pixels)" identifier (argument_list "(local_88c + iVar10,puVar12,(uint)number_pixels)" ( (binary_expression "local_88c + iVar10" identifier + identifier) , identifier , (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) }) while (parenthesized_expression "(iVar7 < piVar8[7])" ( (binary_expression "iVar7 < piVar8[7]" identifier < (subscript_expression "piVar8[7]" identifier [ number_literal ])) )) ;) })) }) (else_clause "else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }" else (compound_statement "{\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }\n      }" { (expression_statement "local_850 = 0;" (assignment_expression "local_850 = 0" identifier = number_literal) ;) (expression_statement "local_840 = local_88c;" (assignment_expression "local_840 = local_88c" identifier = identifier) ;) (if_statement "if (0 < piVar8[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }" if (parenthesized_expression "(0 < piVar8[7])" ( (binary_expression "0 < piVar8[7]" number_literal < (subscript_expression "piVar8[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);\n        }" { (do_statement "do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          } while (local_850 < piVar8[7]);" do (compound_statement "{\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = local_840 + local_84c;\n          }" { (expression_statement "local_89c = local_840;" (assignment_expression "local_89c = local_840" identifier = identifier) ;) (if_statement "if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(image_00);\n            }\n            else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }" if (parenthesized_expression "(local_85c < 0xc9)" ( (binary_expression "local_85c < 0xc9" identifier < number_literal) )) (compound_statement "{\n              local_878 = ReadBlobByte(image_00);\n            }" { (expression_statement "local_878 = ReadBlobByte(image_00);" (assignment_expression "local_878 = ReadBlobByte(image_00)" identifier = (call_expression "ReadBlobByte(image_00)" identifier (argument_list "(image_00)" ( identifier )))) ;) }) (else_clause "else {\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }" else (compound_statement "{\n              uVar3 = ReadBlobMSBShort(image_00);\n              local_878 = (uint)uVar3;\n            }" { (expression_statement "uVar3 = ReadBlobMSBShort(image_00);" (assignment_expression "uVar3 = ReadBlobMSBShort(image_00)" identifier = (call_expression "ReadBlobMSBShort(image_00)" identifier (argument_list "(image_00)" ( identifier )))) ;) (expression_statement "local_878 = (uint)uVar3;" (assignment_expression "local_878 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (if_statement "if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)) goto LAB_0023eb03;" if (parenthesized_expression "(((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5))" ( (binary_expression "((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)" (parenthesized_expression "((uVar4 <= local_878) || (local_878 == 0))" ( (binary_expression "(uVar4 <= local_878) || (local_878 == 0)" (parenthesized_expression "(uVar4 <= local_878)" ( (binary_expression "uVar4 <= local_878" identifier <= identifier) )) || (parenthesized_expression "(local_878 == 0)" ( (binary_expression "local_878 == 0" identifier == number_literal) ))) )) || (parenthesized_expression "(uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5)" ( (comma_expression "uVar5 = ReadBlob(image_00,local_878,pixels), local_878 != uVar5" (assignment_expression "uVar5 = ReadBlob(image_00,local_878,pixels)" identifier = (call_expression "ReadBlob(image_00,local_878,pixels)" identifier (argument_list "(image_00,local_878,pixels)" ( identifier , identifier , identifier )))) , (binary_expression "local_878 != uVar5" identifier != identifier)) ))) )) (goto_statement "goto LAB_0023eb03;" goto statement_identifier ;)) (if_statement "if (0 < (int)local_878) {\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }" if (parenthesized_expression "(0 < (int)local_878)" ( (binary_expression "0 < (int)local_878" number_literal < (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              iVar7 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);\n            }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              } while (iVar7 < (int)local_878);" do (compound_statement "{\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }\n                number_pixels._4_4_ = 0;\n                uVar11 = local_868 * (bVar13 + 1);\n                number_pixels._0_4_ = uVar11;\n                puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;\n                uVar6 = (uint)number_pixels;\n                if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }\n                local_89c = local_89c + uVar6;\n                iVar7 = uVar11 + iVar7 + 1;\n              }" { (while_statement "while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = pixels[iVar7];\n                  if (-1 < (char)bVar13) break;\n                  number_pixels._4_4_ = 0;\n                  number_pixels._0_4_ = local_868;\n                  __src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;\n                  iVar10 = number_pixels._4_4_;\n                  uVar5 = (uint)number_pixels;\n                  iVar9 = 0;\n                  CVar2 = image->storage_class;\n                  puVar12 = local_89c;\n                  do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = local_89c + iVar9 * uVar5;\n                  iVar7 = iVar7 + local_868 + 1;\n                  if ((int)local_878 <= iVar7) goto LAB_0023e9b8;\n                }" { (expression_statement "uVar5 = (int)local_89c - (int)local_88c;" (assignment_expression "uVar5 = (int)local_89c - (int)local_88c" identifier = (binary_expression "(int)local_89c - (int)local_88c" (cast_expression "(int)local_89c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "bVar13 = pixels[iVar7];" (assignment_expression "bVar13 = pixels[iVar7]" identifier = (subscript_expression "pixels[iVar7]" identifier [ identifier ])) ;) (if_statement "if (-1 < (char)bVar13) break;" if (parenthesized_expression "(-1 < (char)bVar13)" ( (binary_expression "-1 < (char)bVar13" number_literal < (cast_expression "(char)bVar13" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "number_pixels._4_4_ = 0;" (assignment_expression "number_pixels._4_4_ = 0" (field_expression "number_pixels._4_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "number_pixels._0_4_ = local_868;" (assignment_expression "number_pixels._0_4_ = local_868" (field_expression "number_pixels._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "__src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                  ;" (assignment_expression "__src = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)" identifier = (call_expression "UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)" identifier (argument_list "(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)" ( (binary_expression "pixels + iVar7 + 1" (binary_expression "pixels + iVar7" identifier + identifier) + number_literal) , (cast_expression "(uint)blob" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , (pointer_expression "&number_pixels" & identifier) )))) ;) (expression_statement "iVar10 = number_pixels._4_4_;" (assignment_expression "iVar10 = number_pixels._4_4_" identifier = (field_expression "number_pixels._4_4_" identifier . field_identifier)) ;) (expression_statement "uVar5 = (uint)number_pixels;" (assignment_expression "uVar5 = (uint)number_pixels" identifier = (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "CVar2 = image->storage_class;" (assignment_expression "CVar2 = image->storage_class" identifier = (field_expression "image->storage_class" identifier -> field_identifier)) ;) (expression_statement "puVar12 = local_89c;" (assignment_expression "puVar12 = local_89c" identifier = identifier) ;) (do_statement "do {\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  } while (iVar9 != (~(uint)bVar13 & 0xff) + 2);" do (compound_statement "{\n                    uVar6 = (int)puVar12 - (int)local_88c;\n                    if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }\n                    iVar9 = iVar9 + 1;\n                    puVar12 = puVar12 + uVar5;\n                  }" { (expression_statement "uVar6 = (int)puVar12 - (int)local_88c;" (assignment_expression "uVar6 = (int)puVar12 - (int)local_88c" identifier = (binary_expression "(int)puVar12 - (int)local_88c" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)) {\n                      memcpy(puVar12,__src,uVar5);\n                    }" if (parenthesized_expression "((((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2))" ( (binary_expression "(((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0) &&\n                       (uVar6 + uVar5 <= CVar2)" (parenthesized_expression "(((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0)" ( (binary_expression "((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5) == 0" (binary_expression "((int)uVar6 >> 0x1f) + iVar10 + (uint)CARRY4(uVar6,uVar5)" (binary_expression "((int)uVar6 >> 0x1f) + iVar10" (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar6,uVar5)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))))) == number_literal) )) && (parenthesized_expression "(uVar6 + uVar5 <= CVar2)" ( (binary_expression "uVar6 + uVar5 <= CVar2" (binary_expression "uVar6 + uVar5" identifier + identifier) <= identifier) ))) )) (compound_statement "{\n                      memcpy(puVar12,__src,uVar5);\n                    }" { (expression_statement "memcpy(puVar12,__src,uVar5);" (call_expression "memcpy(puVar12,__src,uVar5)" identifier (argument_list "(puVar12,__src,uVar5)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + uVar5;" (assignment_expression "puVar12 = puVar12 + uVar5" identifier = (binary_expression "puVar12 + uVar5" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar9 != (~(uint)bVar13 & 0xff) + 2)" ( (binary_expression "iVar9 != (~(uint)bVar13 & 0xff) + 2" identifier != (binary_expression "(~(uint)bVar13 & 0xff) + 2" (parenthesized_expression "(~(uint)bVar13 & 0xff)" ( (binary_expression "~(uint)bVar13 & 0xff" (unary_expression "~(uint)bVar13" ~ (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) + number_literal)) )) ;) (expression_statement "local_89c = local_89c + iVar9 * uVar5;" (assignment_expression "local_89c = local_89c + iVar9 * uVar5" identifier = (binary_expression "local_89c + iVar9 * uVar5" identifier + (binary_expression "iVar9 * uVar5" identifier * identifier))) ;) (expression_statement "iVar7 = iVar7 + local_868 + 1;" (assignment_expression "iVar7 = iVar7 + local_868 + 1" identifier = (binary_expression "iVar7 + local_868 + 1" (binary_expression "iVar7 + local_868" identifier + identifier) + number_literal)) ;) (if_statement "if ((int)local_878 <= iVar7) goto LAB_0023e9b8;" if (parenthesized_expression "((int)local_878 <= iVar7)" ( (binary_expression "(int)local_878 <= iVar7" (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_0023e9b8;" goto statement_identifier ;)) })) (expression_statement "number_pixels._4_4_ = 0;" (assignment_expression "number_pixels._4_4_ = 0" (field_expression "number_pixels._4_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar11 = local_868 * (bVar13 + 1);" (assignment_expression "uVar11 = local_868 * (bVar13 + 1)" identifier = (binary_expression "local_868 * (bVar13 + 1)" identifier * (parenthesized_expression "(bVar13 + 1)" ( (binary_expression "bVar13 + 1" identifier + number_literal) )))) ;) (expression_statement "number_pixels._0_4_ = uVar11;" (assignment_expression "number_pixels._0_4_ = uVar11" (field_expression "number_pixels._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)\n                ;" (assignment_expression "puVar12 = UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)" identifier = (call_expression "UnpackScanline(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)" identifier (argument_list "(pixels + iVar7 + 1,(uint)blob,unpack_buffer,&number_pixels)" ( (binary_expression "pixels + iVar7 + 1" (binary_expression "pixels + iVar7" identifier + identifier) + number_literal) , (cast_expression "(uint)blob" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , (pointer_expression "&number_pixels" & identifier) )))) ;) (expression_statement "uVar6 = (uint)number_pixels;" (assignment_expression "uVar6 = (uint)number_pixels" identifier = (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)) {\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }" if (parenthesized_expression "((((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class))" ( (binary_expression "(((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0) &&\n                   (uVar5 + (uint)number_pixels <= image->storage_class)" (parenthesized_expression "(((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0)" ( (binary_expression "((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels) == 0" (binary_expression "((int)uVar5 >> 0x1f) + number_pixels._4_4_ +\n                     (uint)CARRY4(uVar5,(uint)number_pixels)" (binary_expression "((int)uVar5 >> 0x1f) + number_pixels._4_4_" (parenthesized_expression "((int)uVar5 >> 0x1f)" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (field_expression "number_pixels._4_4_" identifier . field_identifier)) + (cast_expression "(uint)CARRY4(uVar5,(uint)number_pixels)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,(uint)number_pixels)" identifier (argument_list "(uVar5,(uint)number_pixels)" ( identifier , (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier) ))))) == number_literal) )) && (parenthesized_expression "(uVar5 + (uint)number_pixels <= image->storage_class)" ( (binary_expression "uVar5 + (uint)number_pixels <= image->storage_class" (binary_expression "uVar5 + (uint)number_pixels" identifier + (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier)) <= (field_expression "image->storage_class" identifier -> field_identifier)) ))) )) (compound_statement "{\n                  memcpy(local_89c,puVar12,(uint)number_pixels);\n                }" { (expression_statement "memcpy(local_89c,puVar12,(uint)number_pixels);" (call_expression "memcpy(local_89c,puVar12,(uint)number_pixels)" identifier (argument_list "(local_89c,puVar12,(uint)number_pixels)" ( identifier , identifier , (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) })) (expression_statement "local_89c = local_89c + uVar6;" (assignment_expression "local_89c = local_89c + uVar6" identifier = (binary_expression "local_89c + uVar6" identifier + identifier)) ;) (expression_statement "iVar7 = uVar11 + iVar7 + 1;" (assignment_expression "iVar7 = uVar11 + iVar7 + 1" identifier = (binary_expression "uVar11 + iVar7 + 1" (binary_expression "uVar11 + iVar7" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(iVar7 < (int)local_878)" ( (binary_expression "iVar7 < (int)local_878" identifier < (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_0023e9b8:\n            local_850 = local_850 + 1;" statement_identifier : (expression_statement "local_850 = local_850 + 1;" (assignment_expression "local_850 = local_850 + 1" identifier = (binary_expression "local_850 + 1" identifier + number_literal)) ;)) (expression_statement "local_840 = local_840 + local_84c;" (assignment_expression "local_840 = local_840 + local_84c" identifier = (binary_expression "local_840 + local_84c" identifier + identifier)) ;) }) while (parenthesized_expression "(local_850 < piVar8[7])" ( (binary_expression "local_850 < piVar8[7]" identifier < (subscript_expression "piVar8[7]" identifier [ number_literal ])) )) ;) })) }))) (expression_statement "RelinquishMagickMemory(pixels);" (call_expression "RelinquishMagickMemory(pixels)" identifier (argument_list "(pixels)" ( identifier ))) ;) }))) })) (labeled_statement "LAB_0023e9e9:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_88c;\n  }" { (return_statement "return local_88c;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0023eb03:\n  RelinquishMagickMemory(pixels);" statement_identifier : (expression_statement "RelinquishMagickMemory(pixels);" (call_expression "RelinquishMagickMemory(pixels)" identifier (argument_list "(pixels)" ( identifier ))) ;)) (expression_statement "local_88c = (uchar *)RelinquishMagickMemory(local_88c);" (assignment_expression "local_88c = (uchar *)RelinquishMagickMemory(local_88c)" identifier = (cast_expression "(uchar *)RelinquishMagickMemory(local_88c)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "RelinquishMagickMemory(local_88c)" identifier (argument_list "(local_88c)" ( identifier ))))) ;) (goto_statement "goto LAB_0023e9e9;" goto statement_identifier ;) })))
(translation_unit "void * FUN_0023e640(uint param_1,uint *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  void *__s;\n  uint uVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint extraout_ECX;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  void *pvVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  void *local_89c;\n  void *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  void *local_840;\n  uint local_82c;\n  int local_828;\n  undefined4 local_820 [512];\n  int local_20;\n  \n  bVar13 = 0;\n  uVar14 = FUN_0004c803();\n  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);\n  uVar3 = (undefined4)uVar14;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar9[6];\n  local_84c = uVar4;\n  if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);\n  if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }\nLAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    \n  FUN_0029eab0();\nLAB_0023eb03:\n  RelinquishMagickMemory(__s);\n  local_88c = (void *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}\n\n" (function_definition "void * FUN_0023e640(uint param_1,uint *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  void *__s;\n  uint uVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint extraout_ECX;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  void *pvVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  void *local_89c;\n  void *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  void *local_840;\n  uint local_82c;\n  int local_828;\n  undefined4 local_820 [512];\n  int local_20;\n  \n  bVar13 = 0;\n  uVar14 = FUN_0004c803();\n  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);\n  uVar3 = (undefined4)uVar14;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar9[6];\n  local_84c = uVar4;\n  if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);\n  if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }\nLAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    \n  FUN_0029eab0();\nLAB_0023eb03:\n  RelinquishMagickMemory(__s);\n  local_88c = (void *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}" primitive_type (pointer_declarator "* FUN_0023e640(uint param_1,uint *param_2)" * (function_declarator "FUN_0023e640(uint param_1,uint *param_2)" identifier (parameter_list "(uint param_1,uint *param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  void *__s;\n  uint uVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint extraout_ECX;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  void *pvVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  void *local_89c;\n  void *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  void *local_840;\n  uint local_82c;\n  int local_828;\n  undefined4 local_820 [512];\n  int local_20;\n  \n  bVar13 = 0;\n  uVar14 = FUN_0004c803();\n  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);\n  uVar3 = (undefined4)uVar14;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar9[6];\n  local_84c = uVar4;\n  if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);\n  if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }\nLAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    \n  FUN_0029eab0();\nLAB_0023eb03:\n  RelinquishMagickMemory(__s);\n  local_88c = (void *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "void *pvVar12;" primitive_type (pointer_declarator "*pvVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "void *local_89c;" primitive_type (pointer_declarator "*local_89c" * identifier) ;) (declaration "void *local_88c;" primitive_type (pointer_declarator "*local_88c" * identifier) ;) (declaration "uint local_878;" type_identifier identifier ;) (declaration "uint local_868;" type_identifier identifier ;) (declaration "uint local_85c;" type_identifier identifier ;) (declaration "int local_850;" primitive_type identifier ;) (declaration "uint local_84c;" type_identifier identifier ;) (declaration "void *local_840;" primitive_type (pointer_declarator "*local_840" * identifier) ;) (declaration "uint local_82c;" type_identifier identifier ;) (declaration "int local_828;" primitive_type identifier ;) (declaration "undefined4 local_820 [512];" type_identifier (array_declarator "local_820 [512]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = FUN_0004c803();" (assignment_expression "uVar14 = FUN_0004c803()" identifier = (call_expression "FUN_0004c803()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar9 = (int *)((ulonglong)uVar14 >> 0x20);" (assignment_expression "piVar9 = (int *)((ulonglong)uVar14 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar3 = (undefined4)uVar14;" (assignment_expression "uVar3 = (undefined4)uVar14" identifier = (cast_expression "(undefined4)uVar14" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = piVar9[6];" (assignment_expression "uVar4 = piVar9[6]" identifier = (subscript_expression "piVar9[6]" identifier [ number_literal ])) ;) (expression_statement "local_84c = uVar4;" (assignment_expression "local_84c = uVar4" identifier = identifier) ;) (if_statement "if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" if (parenthesized_expression "(param_1 < 9)" ( (binary_expression "param_1 < 9" identifier < number_literal) )) (compound_statement "{\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }" { (expression_statement "local_85c = extraout_ECX & 0x7fff;" (assignment_expression "local_85c = extraout_ECX & 0x7fff" identifier = (binary_expression "extraout_ECX & 0x7fff" identifier & number_literal)) ;) (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" else (compound_statement "{\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" { (expression_statement "local_85c = extraout_ECX;" (assignment_expression "local_85c = extraout_ECX" identifier = identifier) ;) (if_statement "if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" if (parenthesized_expression "(param_1 == 0x10)" ( (binary_expression "param_1 == 0x10" identifier == number_literal) )) (compound_statement "{\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }" { (expression_statement "local_868 = 2;" (assignment_expression "local_868 = 2" identifier = number_literal) ;) (expression_statement "local_84c = uVar4 * 2;" (assignment_expression "local_84c = uVar4 * 2" identifier = (binary_expression "uVar4 * 2" identifier * number_literal)) ;) }) (else_clause "else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" else (if_statement "if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" if (parenthesized_expression "(param_1 == 0x20)" ( (binary_expression "param_1 == 0x20" identifier == number_literal) )) (compound_statement "{\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }" { (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) (expression_statement "local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;" (assignment_expression "local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4" identifier = (binary_expression "((piVar9[0xa5] != 0) + 3) * uVar4" (parenthesized_expression "((piVar9[0xa5] != 0) + 3)" ( (binary_expression "(piVar9[0xa5] != 0) + 3" (parenthesized_expression "(piVar9[0xa5] != 0)" ( (binary_expression "piVar9[0xa5] != 0" (subscript_expression "piVar9[0xa5]" identifier [ number_literal ]) != number_literal) )) + number_literal) )) * identifier)) ;) }) (else_clause "else {\n      local_868 = 1;\n    }" else (compound_statement "{\n      local_868 = 1;\n    }" { (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" identifier = number_literal) ;) }))))) }))) (if_statement "if (local_85c == 0) {\n    local_85c = local_84c;\n  }" if (parenthesized_expression "(local_85c == 0)" ( (binary_expression "local_85c == 0" identifier == number_literal) )) (compound_statement "{\n    local_85c = local_84c;\n  }" { (expression_statement "local_85c = local_84c;" (assignment_expression "local_85c = local_84c" identifier = identifier) ;) })) (if_statement "if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }" if (parenthesized_expression "(*piVar9 == 1)" ( (binary_expression "*piVar9 == 1" (pointer_expression "*piVar9" * identifier) == number_literal) )) (compound_statement "{\n    uVar4 = uVar4 << 2;\n  }" { (expression_statement "uVar4 = uVar4 << 2;" (assignment_expression "uVar4 = uVar4 << 2" identifier = (binary_expression "uVar4 << 2" identifier << number_literal)) ;) })) (expression_statement "uVar4 = uVar4 | 0x8000;" (assignment_expression "uVar4 = uVar4 | 0x8000" identifier = (binary_expression "uVar4 | 0x8000" identifier | number_literal)) ;) (expression_statement "local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);" (assignment_expression "local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4)" identifier = (cast_expression "(void *)AcquireQuantumMemory(piVar9[7],uVar4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(piVar9[7],uVar4)" identifier (argument_list "(piVar9[7],uVar4)" ( (subscript_expression "piVar9[7]" identifier [ number_literal ]) , identifier ))))) ;) (if_statement "if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }" if (parenthesized_expression "(local_88c != (void *)0x0)" ( (binary_expression "local_88c != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }" { (expression_statement "iVar8 = piVar9[7];" (assignment_expression "iVar8 = piVar9[7]" identifier = (subscript_expression "piVar9[7]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = iVar8 * uVar4;" (assignment_expression "*param_2 = iVar8 * uVar4" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar8 * uVar4" identifier * identifier)) ;) (expression_statement "memset(local_88c,0,iVar8 * uVar4);" (call_expression "memset(local_88c,0,iVar8 * uVar4)" identifier (argument_list "(local_88c,0,iVar8 * uVar4)" ( identifier , number_literal , (binary_expression "iVar8 * uVar4" identifier * identifier) ))) ;) (expression_statement "__s = (void *)AcquireQuantumMemory(uVar4,2);" (assignment_expression "__s = (void *)AcquireQuantumMemory(uVar4,2)" identifier = (cast_expression "(void *)AcquireQuantumMemory(uVar4,2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(uVar4,2)" identifier (argument_list "(uVar4,2)" ( identifier , number_literal ))))) ;) (if_statement "if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }" { (expression_statement "RelinquishMagickMemory(local_88c);" (call_expression "RelinquishMagickMemory(local_88c)" identifier (argument_list "(local_88c)" ( identifier ))) ;) (expression_statement "local_88c = (void *)0x0;" (assignment_expression "local_88c = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" else (compound_statement "{\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" { (expression_statement "memset(__s,0,uVar4 * 2);" (call_expression "memset(__s,0,uVar4 * 2)" identifier (argument_list "(__s,0,uVar4 * 2)" ( identifier , number_literal , (binary_expression "uVar4 * 2" identifier * number_literal) ))) ;) (expression_statement "puVar11 = local_820;" (assignment_expression "puVar11 = local_820" identifier = identifier) ;) (for_statement "for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }" for ( (assignment_expression "iVar8 = 0x200" identifier = number_literal) ; (binary_expression "iVar8 != 0" identifier != number_literal) ; (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ) (compound_statement "{\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar13 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar13 * -2 + 1" (binary_expression "puVar11 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (if_statement "if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" if (parenthesized_expression "(local_85c < 8)" ( (binary_expression "local_85c < 8" identifier < number_literal) )) (compound_statement "{\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }" { (if_statement "if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }" if (parenthesized_expression "(0 < piVar9[7])" ( (binary_expression "0 < piVar9[7]" number_literal < (subscript_expression "piVar9[7]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);" do (compound_statement "{\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          }" { (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" identifier = number_literal) ;) (expression_statement "pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);" (assignment_expression "pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" identifier = (cast_expression "(void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" ( (binary_expression "local_84c * piVar9[0xa6] * iVar8 + (int)local_88c" (binary_expression "local_84c * piVar9[0xa6] * iVar8" (binary_expression "local_84c * piVar9[0xa6]" identifier * (subscript_expression "piVar9[0xa6]" identifier [ number_literal ])) * identifier) + (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_82c = local_85c;" (assignment_expression "local_82c = local_85c" identifier = identifier) ;) (expression_statement "uVar4 = ReadBlob(uVar3,local_85c,__s);" (assignment_expression "uVar4 = ReadBlob(uVar3,local_85c,__s)" identifier = (call_expression "ReadBlob(uVar3,local_85c,__s)" identifier (argument_list "(uVar3,local_85c,__s)" ( identifier , identifier , identifier )))) ;) (if_statement "if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;" if (parenthesized_expression "((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c))" ( (binary_expression "(local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)" (parenthesized_expression "(local_82c != uVar4)" ( (binary_expression "local_82c != uVar4" identifier != identifier) )) || (parenthesized_expression "(pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)" ( (comma_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c" (assignment_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c)" identifier = (cast_expression "(void *)FUN_0023deb0(&local_82c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0023deb0(&local_82c)" identifier (argument_list "(&local_82c)" ( (pointer_expression "&local_82c" & identifier) ))))) , (binary_expression "(int)local_88c + *param_2 < (int)pvVar12 + local_82c" (binary_expression "(int)local_88c + *param_2" (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*param_2" * identifier)) < (binary_expression "(int)pvVar12 + local_82c" (cast_expression "(int)pvVar12" ( (type_descriptor "int" primitive_type) ) identifier) + identifier))) ))) )) (goto_statement "goto LAB_0023eb03;" goto statement_identifier ;)) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "memcpy(pvVar12,pvVar6,local_82c);" (call_expression "memcpy(pvVar12,pvVar6,local_82c)" identifier (argument_list "(pvVar12,pvVar6,local_82c)" ( identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "(iVar8 < piVar9[7])" ( (binary_expression "iVar8 < piVar9[7]" identifier < (subscript_expression "piVar9[7]" identifier [ number_literal ])) )) ;) })) }) (else_clause "else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" else (compound_statement "{\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" { (expression_statement "local_850 = 0;" (assignment_expression "local_850 = 0" identifier = number_literal) ;) (expression_statement "local_840 = local_88c;" (assignment_expression "local_840 = local_88c" identifier = identifier) ;) (if_statement "if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }" if (parenthesized_expression "(0 < piVar9[7])" ( (binary_expression "0 < piVar9[7]" number_literal < (subscript_expression "piVar9[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }" { (do_statement "do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);" do (compound_statement "{\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          }" { (expression_statement "local_89c = local_840;" (assignment_expression "local_89c = local_840" identifier = identifier) ;) (if_statement "if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" if (parenthesized_expression "(local_85c < 0xc9)" ( (binary_expression "local_85c < 0xc9" identifier < number_literal) )) (compound_statement "{\n              local_878 = ReadBlobByte(uVar3);\n            }" { (expression_statement "local_878 = ReadBlobByte(uVar3);" (assignment_expression "local_878 = ReadBlobByte(uVar3)" identifier = (call_expression "ReadBlobByte(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) }) (else_clause "else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" else (compound_statement "{\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" { (expression_statement "local_878 = ReadBlobMSBShort(uVar3);" (assignment_expression "local_878 = ReadBlobMSBShort(uVar3)" identifier = (call_expression "ReadBlobMSBShort(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "local_878 = local_878 & 0xffff;" (assignment_expression "local_878 = local_878 & 0xffff" identifier = (binary_expression "local_878 & 0xffff" identifier & number_literal)) ;) }))) (if_statement "if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;" if (parenthesized_expression "(((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5))" ( (binary_expression "((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)" (parenthesized_expression "((uVar4 <= local_878) || (local_878 == 0))" ( (binary_expression "(uVar4 <= local_878) || (local_878 == 0)" (parenthesized_expression "(uVar4 <= local_878)" ( (binary_expression "uVar4 <= local_878" identifier <= identifier) )) || (parenthesized_expression "(local_878 == 0)" ( (binary_expression "local_878 == 0" identifier == number_literal) ))) )) || (parenthesized_expression "(uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)" ( (comma_expression "uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5" (assignment_expression "uVar5 = ReadBlob(uVar3,local_878,__s)" identifier = (call_expression "ReadBlob(uVar3,local_878,__s)" identifier (argument_list "(uVar3,local_878,__s)" ( identifier , identifier , identifier )))) , (binary_expression "local_878 != uVar5" identifier != identifier)) ))) )) (goto_statement "goto LAB_0023eb03;" goto statement_identifier ;)) (if_statement "if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }" if (parenthesized_expression "(0 < (int)local_878)" ( (binary_expression "0 < (int)local_878" number_literal < (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);" do (compound_statement "{\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              }" { (while_statement "while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }" { (expression_statement "uVar5 = (int)local_89c - (int)local_88c;" (assignment_expression "uVar5 = (int)local_89c - (int)local_88c" identifier = (binary_expression "(int)local_89c - (int)local_88c" (cast_expression "(int)local_89c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "bVar13 = *(byte *)((int)__s + iVar8);" (assignment_expression "bVar13 = *(byte *)((int)__s + iVar8)" identifier = (pointer_expression "*(byte *)((int)__s + iVar8)" * (cast_expression "(byte *)((int)__s + iVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + iVar8)" ( (binary_expression "(int)__s + iVar8" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (-1 < (char)bVar13) break;" if (parenthesized_expression "(-1 < (char)bVar13)" ( (binary_expression "-1 < (char)bVar13" number_literal < (cast_expression "(char)bVar13" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" identifier = number_literal) ;) (expression_statement "local_82c = local_868;" (assignment_expression "local_82c = local_868" identifier = identifier) ;) (expression_statement "pvVar6 = (void *)FUN_0023deb0(&local_82c);" (assignment_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c)" identifier = (cast_expression "(void *)FUN_0023deb0(&local_82c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0023deb0(&local_82c)" identifier (argument_list "(&local_82c)" ( (pointer_expression "&local_82c" & identifier) ))))) ;) (expression_statement "iVar2 = local_828;" (assignment_expression "iVar2 = local_828" identifier = identifier) ;) (expression_statement "uVar1 = local_82c;" (assignment_expression "uVar1 = local_82c" identifier = identifier) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "pvVar12 = local_89c;" (assignment_expression "pvVar12 = local_89c" identifier = identifier) ;) (do_statement "do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);" do (compound_statement "{\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  }" { (expression_statement "uVar7 = (int)pvVar12 - (int)local_88c;" (assignment_expression "uVar7 = (int)pvVar12 - (int)local_88c" identifier = (binary_expression "(int)pvVar12 - (int)local_88c" (cast_expression "(int)pvVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_88c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }" if (parenthesized_expression "((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5))" ( (binary_expression "(((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)" (parenthesized_expression "(((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0)" ( (binary_expression "((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0" (binary_expression "((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1)" (binary_expression "((int)uVar7 >> 0x1f) + iVar2" (parenthesized_expression "((int)uVar7 >> 0x1f)" ( (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar7,uVar1)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar7,uVar1)" identifier (argument_list "(uVar7,uVar1)" ( identifier , identifier ))))) == number_literal) )) && (parenthesized_expression "(uVar7 + uVar1 <= uVar5)" ( (binary_expression "uVar7 + uVar1 <= uVar5" (binary_expression "uVar7 + uVar1" identifier + identifier) <= identifier) ))) )) (compound_statement "{\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }" { (expression_statement "memcpy(pvVar12,pvVar6,uVar1);" (call_expression "memcpy(pvVar12,pvVar6,uVar1)" identifier (argument_list "(pvVar12,pvVar6,uVar1)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "pvVar12 = (void *)((int)pvVar12 + uVar1);" (assignment_expression "pvVar12 = (void *)((int)pvVar12 + uVar1)" identifier = (cast_expression "(void *)((int)pvVar12 + uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar12 + uVar1)" ( (binary_expression "(int)pvVar12 + uVar1" (cast_expression "(int)pvVar12" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(iVar10 != (~(uint)bVar13 & 0xff) + 2)" ( (binary_expression "iVar10 != (~(uint)bVar13 & 0xff) + 2" identifier != (binary_expression "(~(uint)bVar13 & 0xff) + 2" (parenthesized_expression "(~(uint)bVar13 & 0xff)" ( (binary_expression "~(uint)bVar13 & 0xff" (unary_expression "~(uint)bVar13" ~ (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) + number_literal)) )) ;) (expression_statement "local_89c = (void *)((int)local_89c + iVar10 * uVar1);" (assignment_expression "local_89c = (void *)((int)local_89c + iVar10 * uVar1)" identifier = (cast_expression "(void *)((int)local_89c + iVar10 * uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_89c + iVar10 * uVar1)" ( (binary_expression "(int)local_89c + iVar10 * uVar1" (cast_expression "(int)local_89c" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar10 * uVar1" identifier * identifier)) )))) ;) (expression_statement "iVar8 = iVar8 + local_868 + 1;" (assignment_expression "iVar8 = iVar8 + local_868 + 1" identifier = (binary_expression "iVar8 + local_868 + 1" (binary_expression "iVar8 + local_868" identifier + identifier) + number_literal)) ;) (if_statement "if ((int)local_878 <= iVar8) goto LAB_0023e9b8;" if (parenthesized_expression "((int)local_878 <= iVar8)" ( (binary_expression "(int)local_878 <= iVar8" (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_0023e9b8;" goto statement_identifier ;)) })) (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = local_868 * (bVar13 + 1);" (assignment_expression "uVar7 = local_868 * (bVar13 + 1)" identifier = (binary_expression "local_868 * (bVar13 + 1)" identifier * (parenthesized_expression "(bVar13 + 1)" ( (binary_expression "bVar13 + 1" identifier + number_literal) )))) ;) (expression_statement "local_82c = uVar7;" (assignment_expression "local_82c = uVar7" identifier = identifier) ;) (expression_statement "pvVar12 = (void *)FUN_0023deb0(&local_82c);" (assignment_expression "pvVar12 = (void *)FUN_0023deb0(&local_82c)" identifier = (cast_expression "(void *)FUN_0023deb0(&local_82c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0023deb0(&local_82c)" identifier (argument_list "(&local_82c)" ( (pointer_expression "&local_82c" & identifier) ))))) ;) (expression_statement "uVar1 = local_82c;" (assignment_expression "uVar1 = local_82c" identifier = identifier) ;) (if_statement "if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }" if (parenthesized_expression "((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2))" ( (binary_expression "(((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)" (parenthesized_expression "(((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0)" ( (binary_expression "((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0" (binary_expression "((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c)" (binary_expression "((int)uVar5 >> 0x1f) + local_828" (parenthesized_expression "((int)uVar5 >> 0x1f)" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar5,local_82c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,local_82c)" identifier (argument_list "(uVar5,local_82c)" ( identifier , identifier ))))) == number_literal) )) && (parenthesized_expression "(uVar5 + local_82c <= *param_2)" ( (binary_expression "uVar5 + local_82c <= *param_2" (binary_expression "uVar5 + local_82c" identifier + identifier) <= (pointer_expression "*param_2" * identifier)) ))) )) (compound_statement "{\n                  memcpy(local_89c,pvVar12,local_82c);\n                }" { (expression_statement "memcpy(local_89c,pvVar12,local_82c);" (call_expression "memcpy(local_89c,pvVar12,local_82c)" identifier (argument_list "(local_89c,pvVar12,local_82c)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "local_89c = (void *)((int)local_89c + uVar1);" (assignment_expression "local_89c = (void *)((int)local_89c + uVar1)" identifier = (cast_expression "(void *)((int)local_89c + uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_89c + uVar1)" ( (binary_expression "(int)local_89c + uVar1" (cast_expression "(int)local_89c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar8 = uVar7 + iVar8 + 1;" (assignment_expression "iVar8 = uVar7 + iVar8 + 1" identifier = (binary_expression "uVar7 + iVar8 + 1" (binary_expression "uVar7 + iVar8" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(iVar8 < (int)local_878)" ( (binary_expression "iVar8 < (int)local_878" identifier < (cast_expression "(int)local_878" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_0023e9b8:\n            local_850 = local_850 + 1;" statement_identifier : (expression_statement "local_850 = local_850 + 1;" (assignment_expression "local_850 = local_850 + 1" identifier = (binary_expression "local_850 + 1" identifier + number_literal)) ;)) (expression_statement "local_840 = (void *)((int)local_840 + local_84c);" (assignment_expression "local_840 = (void *)((int)local_840 + local_84c)" identifier = (cast_expression "(void *)((int)local_840 + local_84c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_840 + local_84c)" ( (binary_expression "(int)local_840 + local_84c" (cast_expression "(int)local_840" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(local_850 < piVar9[7])" ( (binary_expression "local_850 < piVar9[7]" identifier < (subscript_expression "piVar9[7]" identifier [ number_literal ])) )) ;) })) }))) (expression_statement "RelinquishMagickMemory(__s);" (call_expression "RelinquishMagickMemory(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }))) })) (labeled_statement "LAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_88c;\n  }" { (return_statement "return local_88c;" return identifier ;) }))) (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0023eb03:\n  RelinquishMagickMemory(__s);" statement_identifier : (expression_statement "RelinquishMagickMemory(__s);" (call_expression "RelinquishMagickMemory(__s)" identifier (argument_list "(__s)" ( identifier ))) ;)) (expression_statement "local_88c = (void *)RelinquishMagickMemory(local_88c);" (assignment_expression "local_88c = (void *)RelinquishMagickMemory(local_88c)" identifier = (cast_expression "(void *)RelinquishMagickMemory(local_88c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "RelinquishMagickMemory(local_88c)" identifier (argument_list "(local_88c)" ( identifier ))))) ;) (goto_statement "goto LAB_0023e9e9;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) + LIT) )) * 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 IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT * LIT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))))) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * IDENT)) < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT != IDENT)) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= (pointer_expression * IDENT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "void * FUN_0023e640(uint param_1,uint *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  void *__s;\n  uint uVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint extraout_ECX;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  void *pvVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  void *local_89c;\n  void *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  void *local_840;\n  uint local_82c;\n  int local_828;\n  undefined4 local_820 [512];\n  int local_20;\n  \n  bVar13 = 0;\n  uVar14 = FUN_0004c803();\n  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);\n  uVar3 = (undefined4)uVar14;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar9[6];\n  local_84c = uVar4;\n  if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);\n  if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }\nLAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    \n  FUN_0029eab0();\nLAB_0023eb03:\n  RelinquishMagickMemory(__s);\n  local_88c = (void *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}" (primitive_type "void") (pointer_declarator "* FUN_0023e640(uint param_1,uint *param_2)" (* "*") (function_declarator "FUN_0023e640(uint param_1,uint *param_2)" (identifier "FUN_0023e640") (parameter_list "(uint param_1,uint *param_2)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  void *__s;\n  uint uVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint extraout_ECX;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  void *pvVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  undefined8 uVar14;\n  void *local_89c;\n  void *local_88c;\n  uint local_878;\n  uint local_868;\n  uint local_85c;\n  int local_850;\n  uint local_84c;\n  void *local_840;\n  uint local_82c;\n  int local_828;\n  undefined4 local_820 [512];\n  int local_20;\n  \n  bVar13 = 0;\n  uVar14 = FUN_0004c803();\n  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);\n  uVar3 = (undefined4)uVar14;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = piVar9[6];\n  local_84c = uVar4;\n  if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }\n  if (local_85c == 0) {\n    local_85c = local_84c;\n  }\n  if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }\n  uVar4 = uVar4 | 0x8000;\n  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);\n  if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }\nLAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }\n                    \n  FUN_0029eab0();\nLAB_0023eb03:\n  RelinquishMagickMemory(__s);\n  local_88c = (void *)RelinquishMagickMemory(local_88c);\n  goto LAB_0023e9e9;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "void *__s;" (primitive_type "void") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "void *pvVar6;" (primitive_type "void") (pointer_declarator "*pvVar6" (* "*") (identifier "pvVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint extraout_ECX;" (type_identifier "uint") (identifier "extraout_ECX") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "void *pvVar12;" (primitive_type "void") (pointer_declarator "*pvVar12" (* "*") (identifier "pvVar12")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "undefined8 uVar14;" (type_identifier "undefined8") (identifier "uVar14") (; ";")) (declaration "void *local_89c;" (primitive_type "void") (pointer_declarator "*local_89c" (* "*") (identifier "local_89c")) (; ";")) (declaration "void *local_88c;" (primitive_type "void") (pointer_declarator "*local_88c" (* "*") (identifier "local_88c")) (; ";")) (declaration "uint local_878;" (type_identifier "uint") (identifier "local_878") (; ";")) (declaration "uint local_868;" (type_identifier "uint") (identifier "local_868") (; ";")) (declaration "uint local_85c;" (type_identifier "uint") (identifier "local_85c") (; ";")) (declaration "int local_850;" (primitive_type "int") (identifier "local_850") (; ";")) (declaration "uint local_84c;" (type_identifier "uint") (identifier "local_84c") (; ";")) (declaration "void *local_840;" (primitive_type "void") (pointer_declarator "*local_840" (* "*") (identifier "local_840")) (; ";")) (declaration "uint local_82c;" (type_identifier "uint") (identifier "local_82c") (; ";")) (declaration "int local_828;" (primitive_type "int") (identifier "local_828") (; ";")) (declaration "undefined4 local_820 [512];" (type_identifier "undefined4") (array_declarator "local_820 [512]" (identifier "local_820") ([ "[") (number_literal "512") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = FUN_0004c803();" (assignment_expression "uVar14 = FUN_0004c803()" (identifier "uVar14") (= "=") (call_expression "FUN_0004c803()" (identifier "FUN_0004c803") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar9 = (int *)((ulonglong)uVar14 >> 0x20);" (assignment_expression "piVar9 = (int *)((ulonglong)uVar14 >> 0x20)" (identifier "piVar9") (= "=") (cast_expression "(int *)((ulonglong)uVar14 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar3 = (undefined4)uVar14;" (assignment_expression "uVar3 = (undefined4)uVar14" (identifier "uVar3") (= "=") (cast_expression "(undefined4)uVar14" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar4 = piVar9[6];" (assignment_expression "uVar4 = piVar9[6]" (identifier "uVar4") (= "=") (subscript_expression "piVar9[6]" (identifier "piVar9") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_84c = uVar4;" (assignment_expression "local_84c = uVar4" (identifier "local_84c") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (param_1 < 9) {\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }\n  else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" (if "if") (parenthesized_expression "(param_1 < 9)" (( "(") (binary_expression "param_1 < 9" (identifier "param_1") (< "<") (number_literal "9")) () ")")) (compound_statement "{\n    local_85c = extraout_ECX & 0x7fff;\n    local_868 = 1;\n  }" ({ "{") (expression_statement "local_85c = extraout_ECX & 0x7fff;" (assignment_expression "local_85c = extraout_ECX & 0x7fff" (identifier "local_85c") (= "=") (binary_expression "extraout_ECX & 0x7fff" (identifier "extraout_ECX") (& "&") (number_literal "0x7fff"))) (; ";")) (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" (identifier "local_868") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" (else "else") (compound_statement "{\n    local_85c = extraout_ECX;\n    if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }\n  }" ({ "{") (expression_statement "local_85c = extraout_ECX;" (assignment_expression "local_85c = extraout_ECX" (identifier "local_85c") (= "=") (identifier "extraout_ECX")) (; ";")) (if_statement "if (param_1 == 0x10) {\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }\n    else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" (if "if") (parenthesized_expression "(param_1 == 0x10)" (( "(") (binary_expression "param_1 == 0x10" (identifier "param_1") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n      local_868 = 2;\n      local_84c = uVar4 * 2;\n    }" ({ "{") (expression_statement "local_868 = 2;" (assignment_expression "local_868 = 2" (identifier "local_868") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_84c = uVar4 * 2;" (assignment_expression "local_84c = uVar4 * 2" (identifier "local_84c") (= "=") (binary_expression "uVar4 * 2" (identifier "uVar4") (* "*") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" (else "else") (if_statement "if (param_1 == 0x20) {\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }\n    else {\n      local_868 = 1;\n    }" (if "if") (parenthesized_expression "(param_1 == 0x20)" (( "(") (binary_expression "param_1 == 0x20" (identifier "param_1") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n      local_868 = 1;\n      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;\n    }" ({ "{") (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" (identifier "local_868") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;" (assignment_expression "local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4" (identifier "local_84c") (= "=") (binary_expression "((piVar9[0xa5] != 0) + 3) * uVar4" (parenthesized_expression "((piVar9[0xa5] != 0) + 3)" (( "(") (binary_expression "(piVar9[0xa5] != 0) + 3" (parenthesized_expression "(piVar9[0xa5] != 0)" (( "(") (binary_expression "piVar9[0xa5] != 0" (subscript_expression "piVar9[0xa5]" (identifier "piVar9") ([ "[") (number_literal "0xa5") (] "]")) (!= "!=") (number_literal "0")) () ")")) (+ "+") (number_literal "3")) () ")")) (* "*") (identifier "uVar4"))) (; ";")) (} "}")) (else_clause "else {\n      local_868 = 1;\n    }" (else "else") (compound_statement "{\n      local_868 = 1;\n    }" ({ "{") (expression_statement "local_868 = 1;" (assignment_expression "local_868 = 1" (identifier "local_868") (= "=") (number_literal "1")) (; ";")) (} "}")))))) (} "}")))) (if_statement "if (local_85c == 0) {\n    local_85c = local_84c;\n  }" (if "if") (parenthesized_expression "(local_85c == 0)" (( "(") (binary_expression "local_85c == 0" (identifier "local_85c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_85c = local_84c;\n  }" ({ "{") (expression_statement "local_85c = local_84c;" (assignment_expression "local_85c = local_84c" (identifier "local_85c") (= "=") (identifier "local_84c")) (; ";")) (} "}"))) (if_statement "if (*piVar9 == 1) {\n    uVar4 = uVar4 << 2;\n  }" (if "if") (parenthesized_expression "(*piVar9 == 1)" (( "(") (binary_expression "*piVar9 == 1" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar4 = uVar4 << 2;\n  }" ({ "{") (expression_statement "uVar4 = uVar4 << 2;" (assignment_expression "uVar4 = uVar4 << 2" (identifier "uVar4") (= "=") (binary_expression "uVar4 << 2" (identifier "uVar4") (<< "<<") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar4 | 0x8000;" (assignment_expression "uVar4 = uVar4 | 0x8000" (identifier "uVar4") (= "=") (binary_expression "uVar4 | 0x8000" (identifier "uVar4") (| "|") (number_literal "0x8000"))) (; ";")) (expression_statement "local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);" (assignment_expression "local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4)" (identifier "local_88c") (= "=") (cast_expression "(void *)AcquireQuantumMemory(piVar9[7],uVar4)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "AcquireQuantumMemory(piVar9[7],uVar4)" (identifier "AcquireQuantumMemory") (argument_list "(piVar9[7],uVar4)" (( "(") (subscript_expression "piVar9[7]" (identifier "piVar9") ([ "[") (number_literal "7") (] "]")) (, ",") (identifier "uVar4") () ")"))))) (; ";")) (if_statement "if (local_88c != (void *)0x0) {\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }" (if "if") (parenthesized_expression "(local_88c != (void *)0x0)" (( "(") (binary_expression "local_88c != (void *)0x0" (identifier "local_88c") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar8 = piVar9[7];\n    *param_2 = iVar8 * uVar4;\n    memset(local_88c,0,iVar8 * uVar4);\n    __s = (void *)AcquireQuantumMemory(uVar4,2);\n    if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }\n  }" ({ "{") (expression_statement "iVar8 = piVar9[7];" (assignment_expression "iVar8 = piVar9[7]" (identifier "iVar8") (= "=") (subscript_expression "piVar9[7]" (identifier "piVar9") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "*param_2 = iVar8 * uVar4;" (assignment_expression "*param_2 = iVar8 * uVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "iVar8 * uVar4" (identifier "iVar8") (* "*") (identifier "uVar4"))) (; ";")) (expression_statement "memset(local_88c,0,iVar8 * uVar4);" (call_expression "memset(local_88c,0,iVar8 * uVar4)" (identifier "memset") (argument_list "(local_88c,0,iVar8 * uVar4)" (( "(") (identifier "local_88c") (, ",") (number_literal "0") (, ",") (binary_expression "iVar8 * uVar4" (identifier "iVar8") (* "*") (identifier "uVar4")) () ")"))) (; ";")) (expression_statement "__s = (void *)AcquireQuantumMemory(uVar4,2);" (assignment_expression "__s = (void *)AcquireQuantumMemory(uVar4,2)" (identifier "__s") (= "=") (cast_expression "(void *)AcquireQuantumMemory(uVar4,2)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "AcquireQuantumMemory(uVar4,2)" (identifier "AcquireQuantumMemory") (argument_list "(uVar4,2)" (( "(") (identifier "uVar4") (, ",") (number_literal "2") () ")"))))) (; ";")) (if_statement "if (__s == (void *)0x0) {\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }\n    else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" (if "if") (parenthesized_expression "(__s == (void *)0x0)" (( "(") (binary_expression "__s == (void *)0x0" (identifier "__s") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      RelinquishMagickMemory(local_88c);\n      local_88c = (void *)0x0;\n    }" ({ "{") (expression_statement "RelinquishMagickMemory(local_88c);" (call_expression "RelinquishMagickMemory(local_88c)" (identifier "RelinquishMagickMemory") (argument_list "(local_88c)" (( "(") (identifier "local_88c") () ")"))) (; ";")) (expression_statement "local_88c = (void *)0x0;" (assignment_expression "local_88c = (void *)0x0" (identifier "local_88c") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" (else "else") (compound_statement "{\n      memset(__s,0,uVar4 * 2);\n      puVar11 = local_820;\n      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }\n      if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }\n      RelinquishMagickMemory(__s);\n    }" ({ "{") (expression_statement "memset(__s,0,uVar4 * 2);" (call_expression "memset(__s,0,uVar4 * 2)" (identifier "memset") (argument_list "(__s,0,uVar4 * 2)" (( "(") (identifier "__s") (, ",") (number_literal "0") (, ",") (binary_expression "uVar4 * 2" (identifier "uVar4") (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "puVar11 = local_820;" (assignment_expression "puVar11 = local_820" (identifier "puVar11") (= "=") (identifier "local_820")) (; ";")) (for_statement "for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }" (for "for") (( "(") (assignment_expression "iVar8 = 0x200" (identifier "iVar8") (= "=") (number_literal "0x200")) (; ";") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = puVar11 + (uint)bVar13 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar13 * -2 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (uint)bVar13 * -2 + 1" (binary_expression "puVar11 + (uint)bVar13 * -2" (identifier "puVar11") (+ "+") (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (local_85c < 8) {\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }\n      else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" (if "if") (parenthesized_expression "(local_85c < 8)" (( "(") (binary_expression "local_85c < 8" (identifier "local_85c") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n        if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }\n      }" ({ "{") (if_statement "if (0 < piVar9[7]) {\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }" (if "if") (parenthesized_expression "(0 < piVar9[7])" (( "(") (binary_expression "0 < piVar9[7]" (number_literal "0") (< "<") (subscript_expression "piVar9[7]" (identifier "piVar9") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n          iVar8 = 0;\n          do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);\n        }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          } while (iVar8 < piVar9[7]);" (do "do") (compound_statement "{\n            local_828 = 0;\n            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);\n            local_82c = local_85c;\n            uVar4 = ReadBlob(uVar3,local_85c,__s);\n            if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;\n            iVar8 = iVar8 + 1;\n            memcpy(pvVar12,pvVar6,local_82c);\n          }" ({ "{") (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" (identifier "local_828") (= "=") (number_literal "0")) (; ";")) (expression_statement "pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);" (assignment_expression "pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" (identifier "pvVar12") (= "=") (cast_expression "(void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c)" (( "(") (binary_expression "local_84c * piVar9[0xa6] * iVar8 + (int)local_88c" (binary_expression "local_84c * piVar9[0xa6] * iVar8" (binary_expression "local_84c * piVar9[0xa6]" (identifier "local_84c") (* "*") (subscript_expression "piVar9[0xa6]" (identifier "piVar9") ([ "[") (number_literal "0xa6") (] "]"))) (* "*") (identifier "iVar8")) (+ "+") (cast_expression "(int)local_88c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88c"))) () ")")))) (; ";")) (expression_statement "local_82c = local_85c;" (assignment_expression "local_82c = local_85c" (identifier "local_82c") (= "=") (identifier "local_85c")) (; ";")) (expression_statement "uVar4 = ReadBlob(uVar3,local_85c,__s);" (assignment_expression "uVar4 = ReadBlob(uVar3,local_85c,__s)" (identifier "uVar4") (= "=") (call_expression "ReadBlob(uVar3,local_85c,__s)" (identifier "ReadBlob") (argument_list "(uVar3,local_85c,__s)" (( "(") (identifier "uVar3") (, ",") (identifier "local_85c") (, ",") (identifier "__s") () ")")))) (; ";")) (if_statement "if ((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;" (if "if") (parenthesized_expression "((local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c))" (( "(") (binary_expression "(local_82c != uVar4) ||\n               (pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)" (parenthesized_expression "(local_82c != uVar4)" (( "(") (binary_expression "local_82c != uVar4" (identifier "local_82c") (!= "!=") (identifier "uVar4")) () ")")) (|| "||") (parenthesized_expression "(pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)" (( "(") (comma_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c),\n               (int)local_88c + *param_2 < (int)pvVar12 + local_82c" (assignment_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c)" (identifier "pvVar6") (= "=") (cast_expression "(void *)FUN_0023deb0(&local_82c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0023deb0(&local_82c)" (identifier "FUN_0023deb0") (argument_list "(&local_82c)" (( "(") (pointer_expression "&local_82c" (& "&") (identifier "local_82c")) () ")"))))) (, ",") (binary_expression "(int)local_88c + *param_2 < (int)pvVar12 + local_82c" (binary_expression "(int)local_88c + *param_2" (cast_expression "(int)local_88c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88c")) (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (< "<") (binary_expression "(int)pvVar12 + local_82c" (cast_expression "(int)pvVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar12")) (+ "+") (identifier "local_82c")))) () ")"))) () ")")) (goto_statement "goto LAB_0023eb03;" (goto "goto") (statement_identifier "LAB_0023eb03") (; ";"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "memcpy(pvVar12,pvVar6,local_82c);" (call_expression "memcpy(pvVar12,pvVar6,local_82c)" (identifier "memcpy") (argument_list "(pvVar12,pvVar6,local_82c)" (( "(") (identifier "pvVar12") (, ",") (identifier "pvVar6") (, ",") (identifier "local_82c") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 < piVar9[7])" (( "(") (binary_expression "iVar8 < piVar9[7]" (identifier "iVar8") (< "<") (subscript_expression "piVar9[7]" (identifier "piVar9") ([ "[") (number_literal "7") (] "]"))) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" (else "else") (compound_statement "{\n        local_850 = 0;\n        local_840 = local_88c;\n        if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }\n      }" ({ "{") (expression_statement "local_850 = 0;" (assignment_expression "local_850 = 0" (identifier "local_850") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_840 = local_88c;" (assignment_expression "local_840 = local_88c" (identifier "local_840") (= "=") (identifier "local_88c")) (; ";")) (if_statement "if (0 < piVar9[7]) {\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }" (if "if") (parenthesized_expression "(0 < piVar9[7])" (( "(") (binary_expression "0 < piVar9[7]" (number_literal "0") (< "<") (subscript_expression "piVar9[7]" (identifier "piVar9") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n          do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);\n        }" ({ "{") (do_statement "do {\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          } while (local_850 < piVar9[7]);" (do "do") (compound_statement "{\n            local_89c = local_840;\n            if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }\n            if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;\n            if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }\nLAB_0023e9b8:\n            local_850 = local_850 + 1;\n            local_840 = (void *)((int)local_840 + local_84c);\n          }" ({ "{") (expression_statement "local_89c = local_840;" (assignment_expression "local_89c = local_840" (identifier "local_89c") (= "=") (identifier "local_840")) (; ";")) (if_statement "if (local_85c < 0xc9) {\n              local_878 = ReadBlobByte(uVar3);\n            }\n            else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" (if "if") (parenthesized_expression "(local_85c < 0xc9)" (( "(") (binary_expression "local_85c < 0xc9" (identifier "local_85c") (< "<") (number_literal "0xc9")) () ")")) (compound_statement "{\n              local_878 = ReadBlobByte(uVar3);\n            }" ({ "{") (expression_statement "local_878 = ReadBlobByte(uVar3);" (assignment_expression "local_878 = ReadBlobByte(uVar3)" (identifier "local_878") (= "=") (call_expression "ReadBlobByte(uVar3)" (identifier "ReadBlobByte") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" (else "else") (compound_statement "{\n              local_878 = ReadBlobMSBShort(uVar3);\n              local_878 = local_878 & 0xffff;\n            }" ({ "{") (expression_statement "local_878 = ReadBlobMSBShort(uVar3);" (assignment_expression "local_878 = ReadBlobMSBShort(uVar3)" (identifier "local_878") (= "=") (call_expression "ReadBlobMSBShort(uVar3)" (identifier "ReadBlobMSBShort") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "local_878 = local_878 & 0xffff;" (assignment_expression "local_878 = local_878 & 0xffff" (identifier "local_878") (= "=") (binary_expression "local_878 & 0xffff" (identifier "local_878") (& "&") (number_literal "0xffff"))) (; ";")) (} "}")))) (if_statement "if (((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;" (if "if") (parenthesized_expression "(((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5))" (( "(") (binary_expression "((uVar4 <= local_878) || (local_878 == 0)) ||\n               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)" (parenthesized_expression "((uVar4 <= local_878) || (local_878 == 0))" (( "(") (binary_expression "(uVar4 <= local_878) || (local_878 == 0)" (parenthesized_expression "(uVar4 <= local_878)" (( "(") (binary_expression "uVar4 <= local_878" (identifier "uVar4") (<= "<=") (identifier "local_878")) () ")")) (|| "||") (parenthesized_expression "(local_878 == 0)" (( "(") (binary_expression "local_878 == 0" (identifier "local_878") (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)" (( "(") (comma_expression "uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5" (assignment_expression "uVar5 = ReadBlob(uVar3,local_878,__s)" (identifier "uVar5") (= "=") (call_expression "ReadBlob(uVar3,local_878,__s)" (identifier "ReadBlob") (argument_list "(uVar3,local_878,__s)" (( "(") (identifier "uVar3") (, ",") (identifier "local_878") (, ",") (identifier "__s") () ")")))) (, ",") (binary_expression "local_878 != uVar5" (identifier "local_878") (!= "!=") (identifier "uVar5"))) () ")"))) () ")")) (goto_statement "goto LAB_0023eb03;" (goto "goto") (statement_identifier "LAB_0023eb03") (; ";"))) (if_statement "if (0 < (int)local_878) {\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }" (if "if") (parenthesized_expression "(0 < (int)local_878)" (( "(") (binary_expression "0 < (int)local_878" (number_literal "0") (< "<") (cast_expression "(int)local_878" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_878"))) () ")")) (compound_statement "{\n              iVar8 = 0;\n              do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);\n            }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              } while (iVar8 < (int)local_878);" (do "do") (compound_statement "{\n                while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }\n                local_828 = 0;\n                uVar7 = local_868 * (bVar13 + 1);\n                local_82c = uVar7;\n                pvVar12 = (void *)FUN_0023deb0(&local_82c);\n                uVar1 = local_82c;\n                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }\n                local_89c = (void *)((int)local_89c + uVar1);\n                iVar8 = uVar7 + iVar8 + 1;\n              }" ({ "{") (while_statement "while( true ) {\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                  uVar5 = (int)local_89c - (int)local_88c;\n                  bVar13 = *(byte *)((int)__s + iVar8);\n                  if (-1 < (char)bVar13) break;\n                  local_828 = 0;\n                  local_82c = local_868;\n                  pvVar6 = (void *)FUN_0023deb0(&local_82c);\n                  iVar2 = local_828;\n                  uVar1 = local_82c;\n                  iVar10 = 0;\n                  uVar5 = *param_2;\n                  pvVar12 = local_89c;\n                  do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);\n                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);\n                  iVar8 = iVar8 + local_868 + 1;\n                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;\n                }" ({ "{") (expression_statement "uVar5 = (int)local_89c - (int)local_88c;" (assignment_expression "uVar5 = (int)local_89c - (int)local_88c" (identifier "uVar5") (= "=") (binary_expression "(int)local_89c - (int)local_88c" (cast_expression "(int)local_89c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_89c")) (- "-") (cast_expression "(int)local_88c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88c")))) (; ";")) (expression_statement "bVar13 = *(byte *)((int)__s + iVar8);" (assignment_expression "bVar13 = *(byte *)((int)__s + iVar8)" (identifier "bVar13") (= "=") (pointer_expression "*(byte *)((int)__s + iVar8)" (* "*") (cast_expression "(byte *)((int)__s + iVar8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + iVar8)" (( "(") (binary_expression "(int)__s + iVar8" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (identifier "iVar8")) () ")"))))) (; ";")) (if_statement "if (-1 < (char)bVar13) break;" (if "if") (parenthesized_expression "(-1 < (char)bVar13)" (( "(") (binary_expression "-1 < (char)bVar13" (number_literal "-1") (< "<") (cast_expression "(char)bVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar13"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" (identifier "local_828") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_82c = local_868;" (assignment_expression "local_82c = local_868" (identifier "local_82c") (= "=") (identifier "local_868")) (; ";")) (expression_statement "pvVar6 = (void *)FUN_0023deb0(&local_82c);" (assignment_expression "pvVar6 = (void *)FUN_0023deb0(&local_82c)" (identifier "pvVar6") (= "=") (cast_expression "(void *)FUN_0023deb0(&local_82c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0023deb0(&local_82c)" (identifier "FUN_0023deb0") (argument_list "(&local_82c)" (( "(") (pointer_expression "&local_82c" (& "&") (identifier "local_82c")) () ")"))))) (; ";")) (expression_statement "iVar2 = local_828;" (assignment_expression "iVar2 = local_828" (identifier "iVar2") (= "=") (identifier "local_828")) (; ";")) (expression_statement "uVar1 = local_82c;" (assignment_expression "uVar1 = local_82c" (identifier "uVar1") (= "=") (identifier "local_82c")) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" (identifier "uVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "pvVar12 = local_89c;" (assignment_expression "pvVar12 = local_89c" (identifier "pvVar12") (= "=") (identifier "local_89c")) (; ";")) (do_statement "do {\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);" (do "do") (compound_statement "{\n                    uVar7 = (int)pvVar12 - (int)local_88c;\n                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }\n                    iVar10 = iVar10 + 1;\n                    pvVar12 = (void *)((int)pvVar12 + uVar1);\n                  }" ({ "{") (expression_statement "uVar7 = (int)pvVar12 - (int)local_88c;" (assignment_expression "uVar7 = (int)pvVar12 - (int)local_88c" (identifier "uVar7") (= "=") (binary_expression "(int)pvVar12 - (int)local_88c" (cast_expression "(int)pvVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar12")) (- "-") (cast_expression "(int)local_88c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88c")))) (; ";")) (if_statement "if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)) {\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }" (if "if") (parenthesized_expression "((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5))" (( "(") (binary_expression "(((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&\n                       (uVar7 + uVar1 <= uVar5)" (parenthesized_expression "(((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0)" (( "(") (binary_expression "((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0" (binary_expression "((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1)" (binary_expression "((int)uVar7 >> 0x1f) + iVar2" (parenthesized_expression "((int)uVar7 >> 0x1f)" (( "(") (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (identifier "iVar2")) (+ "+") (cast_expression "(uint)CARRY4(uVar7,uVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar7,uVar1)" (identifier "CARRY4") (argument_list "(uVar7,uVar1)" (( "(") (identifier "uVar7") (, ",") (identifier "uVar1") () ")"))))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar7 + uVar1 <= uVar5)" (( "(") (binary_expression "uVar7 + uVar1 <= uVar5" (binary_expression "uVar7 + uVar1" (identifier "uVar7") (+ "+") (identifier "uVar1")) (<= "<=") (identifier "uVar5")) () ")"))) () ")")) (compound_statement "{\n                      memcpy(pvVar12,pvVar6,uVar1);\n                    }" ({ "{") (expression_statement "memcpy(pvVar12,pvVar6,uVar1);" (call_expression "memcpy(pvVar12,pvVar6,uVar1)" (identifier "memcpy") (argument_list "(pvVar12,pvVar6,uVar1)" (( "(") (identifier "pvVar12") (, ",") (identifier "pvVar6") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pvVar12 = (void *)((int)pvVar12 + uVar1);" (assignment_expression "pvVar12 = (void *)((int)pvVar12 + uVar1)" (identifier "pvVar12") (= "=") (cast_expression "(void *)((int)pvVar12 + uVar1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar12 + uVar1)" (( "(") (binary_expression "(int)pvVar12 + uVar1" (cast_expression "(int)pvVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar12")) (+ "+") (identifier "uVar1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != (~(uint)bVar13 & 0xff) + 2)" (( "(") (binary_expression "iVar10 != (~(uint)bVar13 & 0xff) + 2" (identifier "iVar10") (!= "!=") (binary_expression "(~(uint)bVar13 & 0xff) + 2" (parenthesized_expression "(~(uint)bVar13 & 0xff)" (( "(") (binary_expression "~(uint)bVar13 & 0xff" (unary_expression "~(uint)bVar13" (~ "~") (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13"))) (& "&") (number_literal "0xff")) () ")")) (+ "+") (number_literal "2"))) () ")")) (; ";")) (expression_statement "local_89c = (void *)((int)local_89c + iVar10 * uVar1);" (assignment_expression "local_89c = (void *)((int)local_89c + iVar10 * uVar1)" (identifier "local_89c") (= "=") (cast_expression "(void *)((int)local_89c + iVar10 * uVar1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_89c + iVar10 * uVar1)" (( "(") (binary_expression "(int)local_89c + iVar10 * uVar1" (cast_expression "(int)local_89c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_89c")) (+ "+") (binary_expression "iVar10 * uVar1" (identifier "iVar10") (* "*") (identifier "uVar1"))) () ")")))) (; ";")) (expression_statement "iVar8 = iVar8 + local_868 + 1;" (assignment_expression "iVar8 = iVar8 + local_868 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + local_868 + 1" (binary_expression "iVar8 + local_868" (identifier "iVar8") (+ "+") (identifier "local_868")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int)local_878 <= iVar8) goto LAB_0023e9b8;" (if "if") (parenthesized_expression "((int)local_878 <= iVar8)" (( "(") (binary_expression "(int)local_878 <= iVar8" (cast_expression "(int)local_878" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_878")) (<= "<=") (identifier "iVar8")) () ")")) (goto_statement "goto LAB_0023e9b8;" (goto "goto") (statement_identifier "LAB_0023e9b8") (; ";"))) (} "}"))) (expression_statement "local_828 = 0;" (assignment_expression "local_828 = 0" (identifier "local_828") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = local_868 * (bVar13 + 1);" (assignment_expression "uVar7 = local_868 * (bVar13 + 1)" (identifier "uVar7") (= "=") (binary_expression "local_868 * (bVar13 + 1)" (identifier "local_868") (* "*") (parenthesized_expression "(bVar13 + 1)" (( "(") (binary_expression "bVar13 + 1" (identifier "bVar13") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_82c = uVar7;" (assignment_expression "local_82c = uVar7" (identifier "local_82c") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "pvVar12 = (void *)FUN_0023deb0(&local_82c);" (assignment_expression "pvVar12 = (void *)FUN_0023deb0(&local_82c)" (identifier "pvVar12") (= "=") (cast_expression "(void *)FUN_0023deb0(&local_82c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0023deb0(&local_82c)" (identifier "FUN_0023deb0") (argument_list "(&local_82c)" (( "(") (pointer_expression "&local_82c" (& "&") (identifier "local_82c")) () ")"))))) (; ";")) (expression_statement "uVar1 = local_82c;" (assignment_expression "uVar1 = local_82c" (identifier "uVar1") (= "=") (identifier "local_82c")) (; ";")) (if_statement "if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)) {\n                  memcpy(local_89c,pvVar12,local_82c);\n                }" (if "if") (parenthesized_expression "((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2))" (( "(") (binary_expression "(((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&\n                   (uVar5 + local_82c <= *param_2)" (parenthesized_expression "(((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0)" (( "(") (binary_expression "((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0" (binary_expression "((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c)" (binary_expression "((int)uVar5 >> 0x1f) + local_828" (parenthesized_expression "((int)uVar5 >> 0x1f)" (( "(") (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (identifier "local_828")) (+ "+") (cast_expression "(uint)CARRY4(uVar5,local_82c)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar5,local_82c)" (identifier "CARRY4") (argument_list "(uVar5,local_82c)" (( "(") (identifier "uVar5") (, ",") (identifier "local_82c") () ")"))))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar5 + local_82c <= *param_2)" (( "(") (binary_expression "uVar5 + local_82c <= *param_2" (binary_expression "uVar5 + local_82c" (identifier "uVar5") (+ "+") (identifier "local_82c")) (<= "<=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")"))) () ")")) (compound_statement "{\n                  memcpy(local_89c,pvVar12,local_82c);\n                }" ({ "{") (expression_statement "memcpy(local_89c,pvVar12,local_82c);" (call_expression "memcpy(local_89c,pvVar12,local_82c)" (identifier "memcpy") (argument_list "(local_89c,pvVar12,local_82c)" (( "(") (identifier "local_89c") (, ",") (identifier "pvVar12") (, ",") (identifier "local_82c") () ")"))) (; ";")) (} "}"))) (expression_statement "local_89c = (void *)((int)local_89c + uVar1);" (assignment_expression "local_89c = (void *)((int)local_89c + uVar1)" (identifier "local_89c") (= "=") (cast_expression "(void *)((int)local_89c + uVar1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_89c + uVar1)" (( "(") (binary_expression "(int)local_89c + uVar1" (cast_expression "(int)local_89c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_89c")) (+ "+") (identifier "uVar1")) () ")")))) (; ";")) (expression_statement "iVar8 = uVar7 + iVar8 + 1;" (assignment_expression "iVar8 = uVar7 + iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "uVar7 + iVar8 + 1" (binary_expression "uVar7 + iVar8" (identifier "uVar7") (+ "+") (identifier "iVar8")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 < (int)local_878)" (( "(") (binary_expression "iVar8 < (int)local_878" (identifier "iVar8") (< "<") (cast_expression "(int)local_878" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_878"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0023e9b8:\n            local_850 = local_850 + 1;" (statement_identifier "LAB_0023e9b8") (: ":") (expression_statement "local_850 = local_850 + 1;" (assignment_expression "local_850 = local_850 + 1" (identifier "local_850") (= "=") (binary_expression "local_850 + 1" (identifier "local_850") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "local_840 = (void *)((int)local_840 + local_84c);" (assignment_expression "local_840 = (void *)((int)local_840 + local_84c)" (identifier "local_840") (= "=") (cast_expression "(void *)((int)local_840 + local_84c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_840 + local_84c)" (( "(") (binary_expression "(int)local_840 + local_84c" (cast_expression "(int)local_840" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_840")) (+ "+") (identifier "local_84c")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_850 < piVar9[7])" (( "(") (binary_expression "local_850 < piVar9[7]" (identifier "local_850") (< "<") (subscript_expression "piVar9[7]" (identifier "piVar9") ([ "[") (number_literal "7") (] "]"))) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "RelinquishMagickMemory(__s);" (call_expression "RelinquishMagickMemory(__s)" (identifier "RelinquishMagickMemory") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_0023e9e9:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }" (statement_identifier "LAB_0023e9e9") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_88c;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return local_88c;\n  }" ({ "{") (return_statement "return local_88c;" (return "return") (identifier "local_88c") (; ";")) (} "}")))) (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" (identifier "FUN_0029eab0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0023eb03:\n  RelinquishMagickMemory(__s);" (statement_identifier "LAB_0023eb03") (: ":") (expression_statement "RelinquishMagickMemory(__s);" (call_expression "RelinquishMagickMemory(__s)" (identifier "RelinquishMagickMemory") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";"))) (expression_statement "local_88c = (void *)RelinquishMagickMemory(local_88c);" (assignment_expression "local_88c = (void *)RelinquishMagickMemory(local_88c)" (identifier "local_88c") (= "=") (cast_expression "(void *)RelinquishMagickMemory(local_88c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "RelinquishMagickMemory(local_88c)" (identifier "RelinquishMagickMemory") (argument_list "(local_88c)" (( "(") (identifier "local_88c") () ")"))))) (; ";")) (goto_statement "goto LAB_0023e9e9;" (goto "goto") (statement_identifier "LAB_0023e9e9") (; ";")) (} "}")))

/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */

type_1 * function_1(type_2 *var_3,type_2 *image,size_t bytes_per_line,type_3 bits_per_pixel,
                   size_t *extent)

{
  int var_33;
  type_4 var_25;
  type_5 uVar3;
  type_2 *image_00;
  type_3 var_5;
  type_1 *var_11;
  type_3 var_22;
  type_1 *__src;
  type_3 var_24;
  type_3 var_4;
  int var_9;
  int *piVar8;
  int var_26;
  int var_17;
  type_3 var_30;
  type_1 *var_13;
  int var_2;
  type_6 var_29;
  type_7 uVar14;
  type_1 *var_27;
  type_1 *var_8;
  type_3 var_21;
  type_3 var_28;
  type_3 var_6;
  int var_31;
  type_3 var_14;
  type_1 *var_32;
  type_8 number_pixels;
  type_1 unpack_buffer [2048];
  
  var_29 = 0;
  uVar14 = var_1();
  piVar8 = (int *)((type_9)uVar14 >> 0x20);
  image_00 = (type_2 *)uVar14;
  var_33 = *(int *)(var_2 + 0x14);
  var_5 = piVar8[6];
  var_14 = var_5;
  if (var_3 < (type_2 *)0x9) {
    var_6 = var_4 & 0x7fff;
    var_28 = 1;
  }
  else {
    var_6 = var_4;
    if (var_3 == (type_2 *)0x10) {
      var_28 = 2;
      var_14 = var_5 * 2;
    }
    else if (var_3 == (type_2 *)0x20) {
      var_28 = 1;
      var_14 = ((piVar8[0xa5] != 0) + 3) * var_5;
    }
    else {
      var_28 = 1;
    }
  }
  if (var_6 == 0) {
    var_6 = var_14;
  }
  if (*piVar8 == 1) {
    var_5 = var_5 << 2;
  }
  var_5 = var_5 | 0x8000;
  var_8 = (type_1 *)var_7(piVar8[7],var_5);
  if (var_8 != (type_1 *)0x0) {
    var_9 = piVar8[7];
    image->storage_class = var_9 * var_5;
    var_10(var_8,0,var_9 * var_5);
    var_11 = (type_1 *)var_7(var_5,2);
    if (var_11 == (type_1 *)0x0) {
      var_12(var_8);
      var_8 = (type_1 *)0x0;
    }
    else {
      var_10(var_11,0,var_5 * 2);
      var_13 = unpack_buffer;
      for (var_9 = 0x200; var_9 != 0; var_9 = var_9 + -1) {
        var_13[0] = '\0';
        var_13[1] = '\0';
        var_13[2] = '\0';
        var_13[3] = '\0';
        var_13 = var_13 + (type_3)var_29 * -8 + 4;
      }
      if (var_6 < 8) {
        if (0 < piVar8[7]) {
          var_9 = 0;
          do {
            number_pixels._4_4_ = 0;
            var_17 = var_14 * piVar8[0xa6] * var_9;
            number_pixels._0_4_ = var_6;
            var_5 = var_15(image_00,var_6,var_11);
            if (((type_3)number_pixels != var_5) ||
               (var_13 = var_16(var_11,(type_3)var_3,unpack_buffer,&number_pixels),
               var_8 + image->storage_class < var_8 + var_17 + (type_3)number_pixels))
            goto LAB_0023eb03;
            var_9 = var_9 + 1;
            var_18(var_8 + var_17,var_13,(type_3)number_pixels);
          } while (var_9 < piVar8[7]);
        }
      }
      else {
        var_31 = 0;
        var_32 = var_8;
        if (0 < piVar8[7]) {
          do {
            var_27 = var_32;
            if (var_6 < 0xc9) {
              var_21 = var_19(image_00);
            }
            else {
              uVar3 = var_20(image_00);
              var_21 = (type_3)uVar3;
            }
            if (((var_5 <= var_21) || (var_21 == 0)) ||
               (var_22 = var_15(image_00,var_21,var_11), var_21 != var_22)) goto LAB_0023eb03;
            if (0 < (int)var_21) {
              var_9 = 0;
              do {
                while( true ) {
                  var_22 = (int)var_27 - (int)var_8;
                  var_29 = var_11[var_9];
                  if (-1 < (char)var_29) break;
                  number_pixels._4_4_ = 0;
                  number_pixels._0_4_ = var_28;
                  __src = var_16(var_11 + var_9 + 1,(type_3)var_3,unpack_buffer,&number_pixels)
                  ;
                  var_17 = number_pixels._4_4_;
                  var_22 = (type_3)number_pixels;
                  var_26 = 0;
                  var_25 = image->storage_class;
                  var_13 = var_27;
                  do {
                    var_24 = (int)var_13 - (int)var_8;
                    if ((((int)var_24 >> 0x1f) + var_17 + (type_3)var_23(var_24,var_22) == 0) &&
                       (var_24 + var_22 <= var_25)) {
                      var_18(var_13,__src,var_22);
                    }
                    var_26 = var_26 + 1;
                    var_13 = var_13 + var_22;
                  } while (var_26 != (~(type_3)var_29 & 0xff) + 2);
                  var_27 = var_27 + var_26 * var_22;
                  var_9 = var_9 + var_28 + 1;
                  if ((int)var_21 <= var_9) goto LAB_0023e9b8;
                }
                number_pixels._4_4_ = 0;
                var_30 = var_28 * (var_29 + 1);
                number_pixels._0_4_ = var_30;
                var_13 = var_16(var_11 + var_9 + 1,(type_3)var_3,unpack_buffer,&number_pixels)
                ;
                var_24 = (type_3)number_pixels;
                if ((((int)var_22 >> 0x1f) + number_pixels._4_4_ +
                     (type_3)var_23(var_22,(type_3)number_pixels) == 0) &&
                   (var_22 + (type_3)number_pixels <= image->storage_class)) {
                  var_18(var_27,var_13,(type_3)number_pixels);
                }
                var_27 = var_27 + var_24;
                var_9 = var_30 + var_9 + 1;
              } while (var_9 < (int)var_21);
            }
LAB_0023e9b8:
            var_31 = var_31 + 1;
            var_32 = var_32 + var_14;
          } while (var_31 < piVar8[7]);
        }
      }
      var_12(var_11);
    }
  }
LAB_0023e9e9:
  if (var_33 == *(int *)(var_2 + 0x14)) {
    return var_8;
  }
                    /* WARNING: Subroutine does not return */
  var_34();
LAB_0023eb03:
  var_12(var_11);
  var_8 = (type_1 *)var_12(var_8);
  goto LAB_0023e9e9;
}


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

void * MASKED(uint param_1,uint *param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  void *__s;
  uint uVar5;
  void *pvVar6;
  uint uVar7;
  uint extraout_ECX;
  int iVar8;
  int *piVar9;
  int iVar10;
  undefined4 *puVar11;
  void *pvVar12;
  int in_GS_OFFSET;
  byte bVar13;
  undefined8 uVar14;
  void *local_89c;
  void *local_88c;
  uint local_878;
  uint local_868;
  uint local_85c;
  int local_850;
  uint local_84c;
  void *local_840;
  uint local_82c;
  int local_828;
  undefined4 local_820 [512];
  int local_20;
  
  bVar13 = 0;
  uVar14 = FUN_0004c803();
  piVar9 = (int *)((ulonglong)uVar14 >> 0x20);
  uVar3 = (undefined4)uVar14;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar4 = piVar9[6];
  local_84c = uVar4;
  if (param_1 < 9) {
    local_85c = extraout_ECX & 0x7fff;
    local_868 = 1;
  }
  else {
    local_85c = extraout_ECX;
    if (param_1 == 0x10) {
      local_868 = 2;
      local_84c = uVar4 * 2;
    }
    else if (param_1 == 0x20) {
      local_868 = 1;
      local_84c = ((piVar9[0xa5] != 0) + 3) * uVar4;
    }
    else {
      local_868 = 1;
    }
  }
  if (local_85c == 0) {
    local_85c = local_84c;
  }
  if (*piVar9 == 1) {
    uVar4 = uVar4 << 2;
  }
  uVar4 = uVar4 | 0x8000;
  local_88c = (void *)AcquireQuantumMemory(piVar9[7],uVar4);
  if (local_88c != (void *)0x0) {
    iVar8 = piVar9[7];
    *param_2 = iVar8 * uVar4;
    memset(local_88c,0,iVar8 * uVar4);
    __s = (void *)AcquireQuantumMemory(uVar4,2);
    if (__s == (void *)0x0) {
      RelinquishMagickMemory(local_88c);
      local_88c = (void *)0x0;
    }
    else {
      memset(__s,0,uVar4 * 2);
      puVar11 = local_820;
      for (iVar8 = 0x200; iVar8 != 0; iVar8 = iVar8 + -1) {
        *puVar11 = 0;
        puVar11 = puVar11 + (uint)bVar13 * -2 + 1;
      }
      if (local_85c < 8) {
        if (0 < piVar9[7]) {
          iVar8 = 0;
          do {
            local_828 = 0;
            pvVar12 = (void *)(local_84c * piVar9[0xa6] * iVar8 + (int)local_88c);
            local_82c = local_85c;
            uVar4 = ReadBlob(uVar3,local_85c,__s);
            if ((local_82c != uVar4) ||
               (pvVar6 = (void *)FUN_0023deb0(&local_82c),
               (int)local_88c + *param_2 < (int)pvVar12 + local_82c)) goto LAB_0023eb03;
            iVar8 = iVar8 + 1;
            memcpy(pvVar12,pvVar6,local_82c);
          } while (iVar8 < piVar9[7]);
        }
      }
      else {
        local_850 = 0;
        local_840 = local_88c;
        if (0 < piVar9[7]) {
          do {
            local_89c = local_840;
            if (local_85c < 0xc9) {
              local_878 = ReadBlobByte(uVar3);
            }
            else {
              local_878 = ReadBlobMSBShort(uVar3);
              local_878 = local_878 & 0xffff;
            }
            if (((uVar4 <= local_878) || (local_878 == 0)) ||
               (uVar5 = ReadBlob(uVar3,local_878,__s), local_878 != uVar5)) goto LAB_0023eb03;
            if (0 < (int)local_878) {
              iVar8 = 0;
              do {
                while( true ) {
                  uVar5 = (int)local_89c - (int)local_88c;
                  bVar13 = *(byte *)((int)__s + iVar8);
                  if (-1 < (char)bVar13) break;
                  local_828 = 0;
                  local_82c = local_868;
                  pvVar6 = (void *)FUN_0023deb0(&local_82c);
                  iVar2 = local_828;
                  uVar1 = local_82c;
                  iVar10 = 0;
                  uVar5 = *param_2;
                  pvVar12 = local_89c;
                  do {
                    uVar7 = (int)pvVar12 - (int)local_88c;
                    if ((((int)uVar7 >> 0x1f) + iVar2 + (uint)CARRY4(uVar7,uVar1) == 0) &&
                       (uVar7 + uVar1 <= uVar5)) {
                      memcpy(pvVar12,pvVar6,uVar1);
                    }
                    iVar10 = iVar10 + 1;
                    pvVar12 = (void *)((int)pvVar12 + uVar1);
                  } while (iVar10 != (~(uint)bVar13 & 0xff) + 2);
                  local_89c = (void *)((int)local_89c + iVar10 * uVar1);
                  iVar8 = iVar8 + local_868 + 1;
                  if ((int)local_878 <= iVar8) goto LAB_0023e9b8;
                }
                local_828 = 0;
                uVar7 = local_868 * (bVar13 + 1);
                local_82c = uVar7;
                pvVar12 = (void *)FUN_0023deb0(&local_82c);
                uVar1 = local_82c;
                if ((((int)uVar5 >> 0x1f) + local_828 + (uint)CARRY4(uVar5,local_82c) == 0) &&
                   (uVar5 + local_82c <= *param_2)) {
                  memcpy(local_89c,pvVar12,local_82c);
                }
                local_89c = (void *)((int)local_89c + uVar1);
                iVar8 = uVar7 + iVar8 + 1;
              } while (iVar8 < (int)local_878);
            }
LAB_0023e9b8:
            local_850 = local_850 + 1;
            local_840 = (void *)((int)local_840 + local_84c);
          } while (local_850 < piVar9[7]);
        }
      }
      RelinquishMagickMemory(__s);
    }
  }
LAB_0023e9e9:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_88c;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0029eab0();
LAB_0023eb03:
  RelinquishMagickMemory(__s);
  local_88c = (void *)RelinquishMagickMemory(local_88c);
  goto LAB_0023e9e9;
}

