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

MagickBooleanType
WritePixelCachePixels(CacheInfo *cache_info,NexusInfo *nexus_info,ExceptionInfo *exception)

{
  CacheType CVar1;
  long lVar2;
  size_t sVar3;
  MagickBooleanType MVar4;
  long lVar5;
  long lVar6;
  int *piVar7;
  MagickSizeType MVar8;
  MagickSizeType MVar9;
  char *pcVar10;
  ulong __n;
  long lVar11;
  Quantum *__dest;
  ulong uVar12;
  ulong uVar13;
  Quantum *pixels;
  long in_FS_OFFSET;
  size_t local_a0;
  long local_98;
  size_t local_90;
  size_t local_70;
  RectangleInfo region;
  
  lVar2 = *(long *)(in_FS_OFFSET + 0x28);
  if (nexus_info->authentic_pixel_cache != MagickFalse) {
    MVar4 = MagickTrue;
    goto LAB_00169587;
  }
  lVar11 = cache_info->columns * (nexus_info->region).y + (nexus_info->region).x;
  sVar3 = (nexus_info->region).width;
  lVar5 = cache_info->number_channels * 4;
  uVar13 = sVar3 * lVar5;
  local_a0 = (nexus_info->region).height;
  uVar12 = local_a0 * uVar13;
  pixels = nexus_info->pixels;
  CVar1 = cache_info->type;
  local_90 = local_a0;
  if (CVar1 == DistributedCache) {
    LockSemaphoreInfo(cache_info->file_semaphore);
    region.width = (nexus_info->region).width;
    region.height = (nexus_info->region).height;
    region.x = (nexus_info->region).x;
    region.y = (nexus_info->region).y;
    if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {
      local_90 = 1;
LAB_00169365:
      local_98 = 0;
      do {
        MVar8 = WriteDistributePixelCachePixels
                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,
                           (uchar *)pixels);
        if (uVar12 != MVar8) break;
        pixels = (Quantum *)
                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);
        region.y = region.y + 1;
        local_98 = local_98 + 1;
      } while (local_98 < (long)local_90);
    }
    else {
      region.height = 1;
      uVar12 = uVar13;
      if (0 < (long)local_a0) goto LAB_00169365;
      local_98 = 0;
    }
    UnlockSemaphoreInfo(cache_info->file_semaphore);
LAB_001693eb:
    if (local_98 < (long)local_90) {
      piVar7 = __errno_location();
      pcVar10 = GetExceptionMessage(*piVar7);
      ThrowMagickException
                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,
                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);
      DestroyString(pcVar10);
      MVar4 = MagickFalse;
      goto LAB_00169587;
    }
  }
  else {
    if (CVar1 < MapCache) {
      if (CVar1 != DiskCache) goto LAB_001694d3;
      LockSemaphoreInfo(cache_info->file_semaphore);
      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);
      if (MVar4 == MagickFalse) {
        piVar7 = __errno_location();
        pcVar10 = GetExceptionMessage(*piVar7);
        ThrowMagickException
                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,
                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);
        DestroyString(pcVar10);
        UnlockSemaphoreInfo(cache_info->file_semaphore);
        MVar4 = MagickFalse;
        goto LAB_00169587;
      }
      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {
        local_70 = 1;
LAB_001690e8:
        local_98 = 0;
        do {
          sVar3 = cache_info->number_channels;
          lVar5 = cache_info->offset;
          if ((long)uVar12 < 1) {
            uVar13 = 0;
          }
          else {
            uVar13 = 0;
            do {
              __n = uVar12 - uVar13;
              if (0x7ffffffffffffffe < uVar12 - uVar13) {
                __n = 0x7fffffffffffffff;
              }
              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,
                             sVar3 * 4 * lVar11 + lVar5 + uVar13);
              if (lVar6 < 1) {
                piVar7 = __errno_location();
                if (*piVar7 != 4) break;
                lVar6 = 0;
              }
              uVar13 = uVar13 + lVar6;
            } while ((long)uVar13 < (long)uVar12);
          }
          local_90 = local_70;
          if (uVar12 != uVar13) break;
          pixels = (Quantum *)
                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);
          lVar11 = lVar11 + cache_info->columns;
          local_98 = local_98 + 1;
        } while (local_98 < (long)local_70);
      }
      else {
        uVar12 = uVar13;
        local_70 = local_a0;
        if (0 < (long)local_a0) goto LAB_001690e8;
        local_98 = 0;
      }
      MVar8 = GetMagickResource(FileResource);
      MVar9 = GetMagickResourceLimit(FileResource);
      if (MVar9 < MVar8) {
        ClosePixelCacheOnDisk(cache_info);
      }
      UnlockSemaphoreInfo(cache_info->file_semaphore);
      goto LAB_001693eb;
    }
    if (MemoryCache < CVar1) {
LAB_001694d3:
      local_98 = 0;
      goto LAB_001693eb;
    }
    if (cache_info->columns == sVar3) {
      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);
      local_a0 = 1;
LAB_0016912c:
      lVar5 = 0;
      do {
        memcpy(__dest,pixels,uVar12);
        pixels = (Quantum *)
                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);
        __dest = __dest + cache_info->number_channels * cache_info->columns;
        lVar5 = lVar5 + 1;
      } while (lVar5 < (long)local_a0);
    }
    else {
      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);
      uVar12 = uVar13;
      if (0 < (long)local_a0) goto LAB_0016912c;
    }
  }
  MVar4 = MagickTrue;
  if (cache_info->debug != MagickFalse) {
    uVar12 = cache_info->rows;
    uVar13 = (nexus_info->region).y;
    if (((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0)) {
      LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,
                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,
                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,
                     (double)(long)uVar13,cache_info->filename);
      MVar4 = MagickTrue;
    }
  }
LAB_00169587:
  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {
    return MVar4;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



undefined4 FUN_00169009(long param_1,long param_2,undefined8 param_3)

{
  uint uVar1;
  long lVar2;
  undefined4 uVar3;
  int iVar4;
  long lVar5;
  long lVar6;
  int *piVar7;
  undefined8 uVar8;
  ulong __n;
  long lVar9;
  void *__dest;
  ulong uVar10;
  ulong uVar11;
  void *__src;
  long in_FS_OFFSET;
  long local_a0;
  long local_98;
  long local_90;
  long local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  long local_50;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (*(int *)(param_2 + 0x40) != 0) {
    uVar3 = 1;
    goto LAB_00169587;
  }
  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);
  lVar5 = *(long *)(param_1 + 0x28) * 4;
  uVar11 = *(long *)(param_2 + 8) * lVar5;
  local_a0 = *(long *)(param_2 + 0x10);
  uVar10 = local_a0 * uVar11;
  __src = *(void **)(param_2 + 0x38);
  uVar1 = *(uint *)(param_1 + 0x430);
  local_90 = local_a0;
  if (uVar1 == 2) {
    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
    local_68 = *(undefined8 *)(param_2 + 8);
    local_60 = *(undefined8 *)(param_2 + 0x10);
    local_58 = *(undefined8 *)(param_2 + 0x18);
    local_50 = *(long *)(param_2 + 0x20);
    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {
      local_90 = 1;
LAB_00169365:
      local_98 = 0;
      do {
        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);
        if (uVar10 != uVar11) break;
        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));
        local_50 = local_50 + 1;
        local_98 = local_98 + 1;
      } while (local_98 < local_90);
    }
    else {
      local_60 = 1;
      uVar10 = uVar11;
      if (0 < local_a0) goto LAB_00169365;
      local_98 = 0;
    }
    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
LAB_001693eb:
    if (local_98 < local_90) {
      piVar7 = __errno_location();
      uVar8 = GetExceptionMessage(*piVar7);
      ThrowMagickException
                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,
                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);
      DestroyString(uVar8);
      uVar3 = 0;
      goto LAB_00169587;
    }
  }
  else {
    if (uVar1 < 3) {
      if (uVar1 != 1) goto LAB_001694d3;
      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
      iVar4 = FUN_001681c8(param_1,2);
      if (iVar4 == 0) {
        piVar7 = __errno_location();
        uVar8 = GetExceptionMessage(*piVar7);
        ThrowMagickException
                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,
                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);
        DestroyString(uVar8);
        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
        uVar3 = 0;
        goto LAB_00169587;
      }
      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {
        local_70 = 1;
LAB_001690e8:
        local_98 = 0;
        do {
          lVar5 = *(long *)(param_1 + 0x28);
          lVar2 = *(long *)(param_1 + 0x440);
          if ((long)uVar10 < 1) {
            uVar11 = 0;
          }
          else {
            uVar11 = 0;
            do {
              __n = uVar10 - uVar11;
              if (0x7ffffffffffffffe < uVar10 - uVar11) {
                __n = 0x7fffffffffffffff;
              }
              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,
                             lVar5 * 4 * lVar9 + lVar2 + uVar11);
              if (lVar6 < 1) {
                piVar7 = __errno_location();
                if (*piVar7 != 4) break;
                lVar6 = 0;
              }
              uVar11 = uVar11 + lVar6;
            } while ((long)uVar11 < (long)uVar10);
          }
          local_90 = local_70;
          if (uVar10 != uVar11) break;
          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));
          lVar9 = lVar9 + *(long *)(param_1 + 0x10);
          local_98 = local_98 + 1;
        } while (local_98 < local_70);
      }
      else {
        uVar10 = uVar11;
        local_70 = local_a0;
        if (0 < local_a0) goto LAB_001690e8;
        local_98 = 0;
      }
      uVar10 = GetMagickResource(3);
      uVar11 = GetMagickResourceLimit(3);
      if (uVar11 < uVar10) {
        FUN_00167e4e(param_1);
      }
      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
      goto LAB_001693eb;
    }
    if (4 < uVar1) {
LAB_001694d3:
      local_98 = 0;
      goto LAB_001693eb;
    }
    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {
      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));
      local_a0 = 1;
LAB_0016912c:
      lVar5 = 0;
      do {
        memcpy(__dest,__src,uVar10);
        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));
        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);
        lVar5 = lVar5 + 1;
      } while (lVar5 < local_a0);
    }
    else {
      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));
      uVar10 = uVar11;
      if (0 < local_a0) goto LAB_0016912c;
    }
  }
  uVar3 = 1;
  if (*(int *)(param_1 + 0x2544) != 0) {
    uVar10 = *(ulong *)(param_1 + 0x18);
    uVar11 = *(ulong *)(param_2 + 0x20);
    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {
      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),
                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",
                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);
      uVar3 = 1;
    }
  }
LAB_00169587:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar3;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x78
MOV qword ptr [RSP + 0x20],RDX
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x68],RAX
XOR EAX,EAX
MOV EAX,dword ptr [RSI + 0x40]
MOV dword ptr [RSP + 0x8],EAX
TEST EAX,EAX
JNZ 0x0016957f
MOV R12,RDI
MOV R14,RSI
MOV RSI,qword ptr [RDI + 0x10]
MOV RBX,RSI
IMUL RBX,qword ptr [R14 + 0x20]
ADD RBX,qword ptr [R14 + 0x18]
MOV RCX,qword ptr [R14 + 0x8]
MOV RAX,qword ptr [RDI + 0x28]
SHL RAX,0x2
MOV R13,RCX
IMUL R13,RAX
MOV RDI,qword ptr [R14 + 0x10]
MOV qword ptr [RSP + 0x18],RDI
MOV RBP,RDI
IMUL RBP,R13
MOV R15,qword ptr [R14 + 0x38]
MOV EDX,dword ptr [R12 + 0x430]
CMP EDX,0x2
JZ 0x0016930a
CMP EDX,0x2
JA 0x001690fb
CMP EDX,0x1
JNZ 0x001694d3
MOV RDI,qword ptr [R12 + 0x2560]
CALL 0x0014a710
MOV ESI,0x2
MOV RDI,R12
CALL 0x001681c8
MOV dword ptr [RSP + 0x10],EAX
TEST EAX,EAX
JZ 0x0016916e
MOV RAX,qword ptr [R14 + 0x8]
CMP qword ptr [R12 + 0x10],RAX
JNZ 0x001690d5
CMP RBP,0x14000
JBE 0x001691e8
MOV RAX,qword ptr [RSP + 0x18]
MOV qword ptr [RSP + 0x38],RAX
TEST RAX,RAX
JLE 0x001692c2
MOV qword ptr [RSP + 0x10],0x0
MOV qword ptr [RSP + 0x30],R14
JMP 0x0016928d
CMP EDX,0x4
JA 0x001694d3
CMP RSI,RCX
JZ 0x001695aa
IMUL RBX,RAX
ADD RBX,qword ptr [R12 + 0x4c0]
MOV RAX,qword ptr [RSP + 0x18]
MOV qword ptr [RSP + 0x8],RAX
TEST RAX,RAX
JLE 0x001693fb
MOV EBP,0x0
MOV RDX,R13
MOV RSI,R15
MOV RDI,RBX
CALL 0x0014d710
MOV RAX,qword ptr [R12 + 0x28]
LEA RDX,[RAX*0x4]
IMUL RDX,qword ptr [R14 + 0x8]
ADD R15,RDX
IMUL RAX,qword ptr [R12 + 0x10]
LEA RBX,[RBX + RAX*0x4]
ADD RBP,0x1
CMP RBP,qword ptr [RSP + 0x8]
JL 0x00169131
JMP 0x001693fb
CALL 0x0014c2f0
MOV EDI,dword ptr [RAX]
CALL 0x0014b460
MOV RBX,RAX
SUB RSP,0x8
PUSH RAX
LEA RAX,[R12 + 0x14d4]
PUSH RAX
LEA RAX,[0x3f86ec]
PUSH RAX
LEA R9,[0x3f8713]
MOV R8D,0x1ae
MOV ECX,0x1691
LEA RDX,[0x3fbba0]
LEA RSI,[0x3fb373]
MOV RDI,qword ptr [RSP + 0x40]
MOV EAX,0x0
CALL 0x0014cb70
ADD RSP,0x20
MOV RDI,RBX
CALL 0x0014c570
MOV RDI,qword ptr [R12 + 0x2560]
CALL 0x0014b660
MOV EAX,dword ptr [RSP + 0x10]
MOV dword ptr [RSP + 0x8],EAX
JMP 0x00169587
MOV R13,RBP
MOV qword ptr [RSP + 0x38],0x1
MOV qword ptr [RSP + 0x18],0x1
JMP 0x001690e8
ADD RBX,RAX
CMP RBX,R14
JGE 0x00169256
LEA RCX,[RBP + RBX*0x1]
MOV RDX,R13
SUB RDX,RBX
MOV RAX,0x7ffffffffffffffe
CMP RDX,RAX
LEA RAX,[RAX + 0x1]
CMOVA RDX,RAX
LEA RSI,[R15 + RBX*0x1]
MOV EDI,dword ptr [R12 + 0x4d0]
CALL 0x00149cb0
TEST RAX,RAX
JG 0x00169202
CALL 0x0014c2f0
CMP dword ptr [RAX],0x4
JNZ 0x00169256
MOV EAX,0x0
JMP 0x00169202
MOV EBX,0x0
CMP R14,RBX
JNZ 0x001692cd
MOV RAX,qword ptr [R12 + 0x28]
SHL RAX,0x2
MOV RCX,qword ptr [RSP + 0x30]
IMUL RAX,qword ptr [RCX + 0x8]
ADD R15,RAX
MOV RBX,qword ptr [RSP + 0x28]
ADD RBX,qword ptr [R12 + 0x10]
ADD qword ptr [RSP + 0x10],0x1
MOV RAX,qword ptr [RSP + 0x10]
CMP RAX,qword ptr [RSP + 0x38]
JGE 0x001692bd
MOV qword ptr [RSP + 0x28],RBX
MOV RAX,qword ptr [R12 + 0x28]
LEA RBP,[RAX*0x4]
IMUL RBP,RBX
ADD RBP,qword ptr [R12 + 0x440]
MOV R14,R13
TEST R13,R13
JLE 0x00169251
MOV EBX,0x0
JMP 0x0016920a
MOV R14,RCX
JMP 0x001692d2
MOV qword ptr [RSP + 0x10],0x0
JMP 0x001692d2
MOV R14,qword ptr [RSP + 0x30]
MOV EDI,0x3
CALL 0x00149f80
MOV RBX,RAX
MOV EDI,0x3
CALL 0x0014c170
CMP RBX,RAX
JA 0x00169300
MOV RDI,qword ptr [R12 + 0x2560]
CALL 0x0014b660
JMP 0x001693eb
MOV RDI,R12
CALL 0x00167e4e
JMP 0x001692ee
MOV RDI,qword ptr [R12 + 0x2560]
CALL 0x0014a710
MOV RAX,qword ptr [R14 + 0x8]
MOV qword ptr [RSP + 0x40],RAX
MOV RAX,qword ptr [R14 + 0x10]
MOV qword ptr [RSP + 0x48],RAX
MOV RAX,qword ptr [R14 + 0x18]
MOV qword ptr [RSP + 0x50],RAX
MOV RAX,qword ptr [R14 + 0x20]
MOV qword ptr [RSP + 0x58],RAX
MOV RAX,qword ptr [R14 + 0x8]
CMP qword ptr [R12 + 0x10],RAX
JNZ 0x0016934f
CMP RBP,0x14000
JBE 0x001693bb
MOV qword ptr [RSP + 0x48],0x1
MOV RAX,qword ptr [RSP + 0x18]
MOV RBP,RAX
TEST RAX,RAX
JLE 0x001693ce
MOV EAX,0x0
LEA RBX,[RSP + 0x40]
MOV qword ptr [RSP + 0x10],RBP
MOV RBP,RAX
MOV RDI,qword ptr [R12 + 0x2538]
MOV RCX,R15
MOV RDX,R13
MOV RSI,RBX
CALL 0x001c4c55
CMP R13,RAX
JNZ 0x001693d9
MOV RAX,qword ptr [R12 + 0x28]
SHL RAX,0x2
IMUL RAX,qword ptr [R14 + 0x8]
ADD R15,RAX
ADD qword ptr [RSP + 0x58],0x1
ADD RBP,0x1
CMP RBP,qword ptr [RSP + 0x10]
JL 0x00169377
MOV qword ptr [RSP + 0x10],RBP
JMP 0x001693de
MOV R13,RBP
MOV EBP,0x1
MOV qword ptr [RSP + 0x18],0x1
JMP 0x00169365
MOV qword ptr [RSP + 0x10],0x0
JMP 0x001693de
MOV qword ptr [RSP + 0x10],RBP
MOV RDI,qword ptr [R12 + 0x2560]
CALL 0x0014b660
MOV RSI,qword ptr [RSP + 0x10]
CMP qword ptr [RSP + 0x18],RSI
JG 0x001694e1
MOV dword ptr [RSP + 0x8],0x1
CMP dword ptr [R12 + 0x2544],0x0
JZ 0x00169587
MOV RAX,qword ptr [R12 + 0x18]
MOV RSI,qword ptr [R14 + 0x20]
CMP RAX,0x64
JBE 0x00169456
LEA RDX,[RAX + -0x1]
CMP RSI,RDX
JZ 0x00169456
SHR RAX,0x2
MOV RDX,0x28f5c28f5c28f5c3
MUL RDX
MOV RCX,RDX
SHR RCX,0x2
MOV RAX,RSI
MOV EDX,0x0
DIV RCX
TEST RDX,RDX
JNZ 0x00169587
PXOR XMM3,XMM3
CVTSI2SD XMM3,RSI
PXOR XMM2,XMM2
CVTSI2SD XMM2,qword ptr [R14 + 0x18]
MOV RDX,qword ptr [R14 + 0x10]
TEST RDX,RDX
JS 0x00169543
PXOR XMM1,XMM1
CVTSI2SD XMM1,RDX
MOV RDX,qword ptr [R14 + 0x8]
TEST RDX,RDX
JS 0x00169561
PXOR XMM0,XMM0
CVTSI2SD XMM0,RDX
LEA R9,[R12 + 0x4d4]
LEA R8,[0x3fb3ba]
MOV ECX,0x16d3
LEA RDX,[0x3fbba0]
LEA RSI,[0x3fb373]
MOV EDI,0x8
MOV EAX,0x4
CALL 0x0014be20
MOV dword ptr [RSP + 0x8],0x1
JMP 0x00169587
MOV qword ptr [RSP + 0x10],0x0
JMP 0x001693eb
CALL 0x0014c2f0
MOV EDI,dword ptr [RAX]
CALL 0x0014b460
MOV RBX,RAX
SUB RSP,0x8
PUSH RAX
ADD R12,0x14d4
PUSH R12
LEA RAX,[0x3f86ec]
PUSH RAX
LEA R9,[0x3fb3d6]
MOV R8D,0x1bd
MOV ECX,0x16ce
LEA RDX,[0x3fbba0]
LEA RSI,[0x3fb373]
MOV RDI,qword ptr [RSP + 0x40]
MOV EAX,0x0
CALL 0x0014cb70
ADD RSP,0x20
MOV RDI,RBX
CALL 0x0014c570
JMP 0x00169587
MOV RAX,RDX
SHR RAX,0x1
AND EDX,0x1
OR RAX,RDX
PXOR XMM1,XMM1
CVTSI2SD XMM1,RAX
ADDSD XMM1,XMM1
JMP 0x0016947f
MOV RAX,RDX
SHR RAX,0x1
AND EDX,0x1
OR RAX,RDX
PXOR XMM0,XMM0
CVTSI2SD XMM0,RAX
ADDSD XMM0,XMM0
JMP 0x00169495
MOV dword ptr [RSP + 0x8],0x1
MOV EAX,dword ptr [RSP + 0x8]
MOV RCX,qword ptr [RSP + 0x68]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x001695c7
ADD RSP,0x78
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
IMUL RBX,RAX
ADD RBX,qword ptr [R12 + 0x4c0]
MOV R13,RBP
MOV qword ptr [RSP + 0x8],0x1
JMP 0x0016912c
CALL 0x0014c5c0
(translation_unit "undefined4 FUN_00169009(long param_1,long param_2,undefined8 param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  undefined8 uVar8;\n  ulong __n;\n  long lVar9;\n  void *__dest;\n  ulong uVar10;\n  ulong uVar11;\n  void *__src;\n  long in_FS_OFFSET;\n  long local_a0;\n  long local_98;\n  long local_90;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_50;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }\n  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);\n  lVar5 = *(long *)(param_1 + 0x28) * 4;\n  uVar11 = *(long *)(param_2 + 8) * lVar5;\n  local_a0 = *(long *)(param_2 + 0x10);\n  uVar10 = local_a0 * uVar11;\n  __src = *(void **)(param_2 + 0x38);\n  uVar1 = *(uint *)(param_1 + 0x430);\n  local_90 = local_a0;\n  if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }\n  uVar3 = 1;\n  if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }\nLAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "undefined4 FUN_00169009(long param_1,long param_2,undefined8 param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  undefined8 uVar8;\n  ulong __n;\n  long lVar9;\n  void *__dest;\n  ulong uVar10;\n  ulong uVar11;\n  void *__src;\n  long in_FS_OFFSET;\n  long local_a0;\n  long local_98;\n  long local_90;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_50;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }\n  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);\n  lVar5 = *(long *)(param_1 + 0x28) * 4;\n  uVar11 = *(long *)(param_2 + 8) * lVar5;\n  local_a0 = *(long *)(param_2 + 0x10);\n  uVar10 = local_a0 * uVar11;\n  __src = *(void **)(param_2 + 0x38);\n  uVar1 = *(uint *)(param_1 + 0x430);\n  local_90 = local_a0;\n  if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }\n  uVar3 = 1;\n  if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }\nLAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (function_declarator "FUN_00169009(long param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  undefined8 uVar8;\n  ulong __n;\n  long lVar9;\n  void *__dest;\n  ulong uVar10;\n  ulong uVar11;\n  void *__src;\n  long in_FS_OFFSET;\n  long local_a0;\n  long local_98;\n  long local_90;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_50;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }\n  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);\n  lVar5 = *(long *)(param_1 + 0x28) * 4;\n  uVar11 = *(long *)(param_2 + 8) * lVar5;\n  local_a0 = *(long *)(param_2 + 0x10);\n  uVar10 = local_a0 * uVar11;\n  __src = *(void **)(param_2 + 0x38);\n  uVar1 = *(uint *)(param_1 + 0x430);\n  local_90 = local_a0;\n  if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }\n  uVar3 = 1;\n  if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }\nLAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_a0;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_90;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "undefined8 local_58;" type_identifier identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x40) != 0)" ( (binary_expression "*(int *)(param_2 + 0x40) != 0" (pointer_expression "*(int *)(param_2 + 0x40)" * (cast_expression "(int *)(param_2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    uVar3 = 1;\n    goto LAB_00169587;\n  }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) })) (expression_statement "lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18)" identifier = (binary_expression "*(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18)" (binary_expression "*(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) * (pointer_expression "*(long *)(param_2 + 0x20)" * (cast_expression "(long *)(param_2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) + (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))))) ;) (expression_statement "lVar5 = *(long *)(param_1 + 0x28) * 4;" (assignment_expression "lVar5 = *(long *)(param_1 + 0x28) * 4" identifier = (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * number_literal)) ;) (expression_statement "uVar11 = *(long *)(param_2 + 8) * lVar5;" (assignment_expression "uVar11 = *(long *)(param_2 + 8) * lVar5" identifier = (binary_expression "*(long *)(param_2 + 8) * lVar5" (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) * identifier)) ;) (expression_statement "local_a0 = *(long *)(param_2 + 0x10);" (assignment_expression "local_a0 = *(long *)(param_2 + 0x10)" identifier = (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = local_a0 * uVar11;" (assignment_expression "uVar10 = local_a0 * uVar11" identifier = (binary_expression "local_a0 * uVar11" identifier * identifier)) ;) (expression_statement "__src = *(void **)(param_2 + 0x38);" (assignment_expression "__src = *(void **)(param_2 + 0x38)" identifier = (pointer_expression "*(void **)(param_2 + 0x38)" * (cast_expression "(void **)(param_2 + 0x38)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x430);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x430)" identifier = (pointer_expression "*(uint *)(param_1 + 0x430)" * (cast_expression "(uint *)(param_1 + 0x430)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x430)" ( (binary_expression "param_1 + 0x430" identifier + number_literal) ))))) ;) (expression_statement "local_90 = local_a0;" (assignment_expression "local_90 = local_a0" identifier = identifier) ;) (if_statement "if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" if (parenthesized_expression "(uVar1 == 2)" ( (binary_expression "uVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }" { (expression_statement "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (expression_statement "local_68 = *(undefined8 *)(param_2 + 8);" (assignment_expression "local_68 = *(undefined8 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_60 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_60 = *(undefined8 *)(param_2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_58 = *(undefined8 *)(param_2 + 0x18);" (assignment_expression "local_58 = *(undefined8 *)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x18)" * (cast_expression "(undefined8 *)(param_2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_50 = *(long *)(param_2 + 0x20);" (assignment_expression "local_50 = *(long *)(param_2 + 0x20)" identifier = (pointer_expression "*(long *)(param_2 + 0x20)" * (cast_expression "(long *)(param_2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" if (parenthesized_expression "((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001))" ( (binary_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)" (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" ( (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) && (parenthesized_expression "(uVar10 < 0x14001)" ( (binary_expression "uVar10 < 0x14001" identifier < number_literal) ))) )) (compound_statement "{\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }" { (expression_statement "local_90 = 1;" (assignment_expression "local_90 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00169365:\n      local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (do_statement "do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);" do (compound_statement "{\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      }" { (expression_statement "uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);" (assignment_expression "uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" identifier = (call_expression "FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2538)" * (cast_expression "(undefined8 *)(param_1 + 0x2538)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2538)" ( (binary_expression "param_1 + 0x2538" identifier + number_literal) )))) , (pointer_expression "&local_68" & identifier) , identifier , identifier )))) ;) (if_statement "if (uVar10 != uVar11) break;" if (parenthesized_expression "(uVar10 != uVar11)" ( (binary_expression "uVar10 != uVar11" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" identifier = (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * number_literal) * (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))))) )))) ;) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "local_98 = local_98 + 1;" (assignment_expression "local_98 = local_98 + 1" identifier = (binary_expression "local_98 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_98 < local_90)" ( (binary_expression "local_98 < local_90" identifier < identifier) )) ;) }) (else_clause "else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" else (compound_statement "{\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" { (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" identifier = number_literal) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if (0 < local_a0) goto LAB_00169365;" if (parenthesized_expression "(0 < local_a0)" ( (binary_expression "0 < local_a0" number_literal < identifier) )) (goto_statement "goto LAB_00169365;" goto statement_identifier ;)) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) }))) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (labeled_statement "LAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" statement_identifier : (if_statement "if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" if (parenthesized_expression "(local_98 < local_90)" ( (binary_expression "local_98 < local_90" identifier < identifier) )) (compound_statement "{\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = GetExceptionMessage(*piVar7);" (assignment_expression "uVar8 = GetExceptionMessage(*piVar7)" identifier = (call_expression "GetExceptionMessage(*piVar7)" identifier (argument_list "(*piVar7)" ( (pointer_expression "*piVar7" * identifier) )))) ;) (expression_statement "ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);" (call_expression "ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8)" identifier (argument_list "(param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8)" ( identifier , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , number_literal , (string_literal ""UnableToWritePixelCache"" " string_content ") , (string_literal ""\'%s\': %s"" " escape_sequence string_content escape_sequence string_content ") , (binary_expression "param_1 + 0x14d4" identifier + number_literal) , identifier ))) ;) (expression_statement "DestroyString(uVar8);" (call_expression "DestroyString(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" else (compound_statement "{\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" { (if_statement "if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }" if (parenthesized_expression "(uVar1 < 3)" ( (binary_expression "uVar1 < 3" identifier < number_literal) )) (compound_statement "{\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }" { (if_statement "if (uVar1 != 1) goto LAB_001694d3;" if (parenthesized_expression "(uVar1 != 1)" ( (binary_expression "uVar1 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001694d3;" goto statement_identifier ;)) (expression_statement "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (expression_statement "iVar4 = FUN_001681c8(param_1,2);" (assignment_expression "iVar4 = FUN_001681c8(param_1,2)" identifier = (call_expression "FUN_001681c8(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;) (if_statement "if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = GetExceptionMessage(*piVar7);" (assignment_expression "uVar8 = GetExceptionMessage(*piVar7)" identifier = (call_expression "GetExceptionMessage(*piVar7)" identifier (argument_list "(*piVar7)" ( (pointer_expression "*piVar7" * identifier) )))) ;) (expression_statement "ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);" (call_expression "ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8)" identifier (argument_list "(param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8)" ( identifier , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , number_literal , (string_literal ""UnableToOpenFile"" " string_content ") , (string_literal ""\'%s\': %s"" " escape_sequence string_content escape_sequence string_content ") , (binary_expression "param_1 + 0x14d4" identifier + number_literal) , identifier ))) ;) (expression_statement "DestroyString(uVar8);" (call_expression "DestroyString(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) })) (if_statement "if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" if (parenthesized_expression "((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001))" ( (binary_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)" (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" ( (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) && (parenthesized_expression "(uVar10 < 0x14001)" ( (binary_expression "uVar10 < 0x14001" identifier < number_literal) ))) )) (compound_statement "{\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }" { (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001690e8:\n        local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (do_statement "do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);" do (compound_statement "{\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        }" { (expression_statement "lVar5 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar5 = *(long *)(param_1 + 0x28)" identifier = (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar2 = *(long *)(param_1 + 0x440);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x440)" identifier = (pointer_expression "*(long *)(param_1 + 0x440)" * (cast_expression "(long *)(param_1 + 0x440)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x440)" ( (binary_expression "param_1 + 0x440" identifier + number_literal) ))))) ;) (if_statement "if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" if (parenthesized_expression "((long)uVar10 < 1)" ( (binary_expression "(long)uVar10 < 1" (cast_expression "(long)uVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n            uVar11 = 0;\n          }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" else (compound_statement "{\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);" do (compound_statement "{\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            }" { (expression_statement "__n = uVar10 - uVar11;" (assignment_expression "__n = uVar10 - uVar11" identifier = (binary_expression "uVar10 - uVar11" identifier - identifier)) ;) (if_statement "if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }" if (parenthesized_expression "(0x7ffffffffffffffe < uVar10 - uVar11)" ( (binary_expression "0x7ffffffffffffffe < uVar10 - uVar11" number_literal < (binary_expression "uVar10 - uVar11" identifier - identifier)) )) (compound_statement "{\n                __n = 0x7fffffffffffffff;\n              }" { (expression_statement "__n = 0x7fffffffffffffff;" (assignment_expression "__n = 0x7fffffffffffffff" identifier = number_literal) ;) })) (expression_statement "lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);" (assignment_expression "lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" identifier = (call_expression "pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" identifier (argument_list "(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" ( (pointer_expression "*(int *)(param_1 + 0x4d0)" * (cast_expression "(int *)(param_1 + 0x4d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4d0)" ( (binary_expression "param_1 + 0x4d0" identifier + number_literal) )))) , (cast_expression "(void *)((long)__src + uVar11)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + uVar11)" ( (binary_expression "(long)__src + uVar11" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , identifier , (binary_expression "lVar5 * 4 * lVar9 + lVar2 + uVar11" (binary_expression "lVar5 * 4 * lVar9 + lVar2" (binary_expression "lVar5 * 4 * lVar9" (binary_expression "lVar5 * 4" identifier * number_literal) * identifier) + identifier) + identifier) )))) ;) (if_statement "if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }" if (parenthesized_expression "(lVar6 < 1)" ( (binary_expression "lVar6 < 1" identifier < number_literal) )) (compound_statement "{\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*piVar7 != 4) break;" if (parenthesized_expression "(*piVar7 != 4)" ( (binary_expression "*piVar7 != 4" (pointer_expression "*piVar7" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) })) (expression_statement "uVar11 = uVar11 + lVar6;" (assignment_expression "uVar11 = uVar11 + lVar6" identifier = (binary_expression "uVar11 + lVar6" identifier + identifier)) ;) }) while (parenthesized_expression "((long)uVar11 < (long)uVar10)" ( (binary_expression "(long)uVar11 < (long)uVar10" (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < (cast_expression "(long)uVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) }))) (expression_statement "local_90 = local_70;" (assignment_expression "local_90 = local_70" identifier = identifier) ;) (if_statement "if (uVar10 != uVar11) break;" if (parenthesized_expression "(uVar10 != uVar11)" ( (binary_expression "uVar10 != uVar11" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" identifier = (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * number_literal) * (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))))) )))) ;) (expression_statement "lVar9 = lVar9 + *(long *)(param_1 + 0x10);" (assignment_expression "lVar9 = lVar9 + *(long *)(param_1 + 0x10)" identifier = (binary_expression "lVar9 + *(long *)(param_1 + 0x10)" identifier + (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))))) ;) (expression_statement "local_98 = local_98 + 1;" (assignment_expression "local_98 = local_98 + 1" identifier = (binary_expression "local_98 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_98 < local_70)" ( (binary_expression "local_98 < local_70" identifier < identifier) )) ;) }) (else_clause "else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" else (compound_statement "{\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" { (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (expression_statement "local_70 = local_a0;" (assignment_expression "local_70 = local_a0" identifier = identifier) ;) (if_statement "if (0 < local_a0) goto LAB_001690e8;" if (parenthesized_expression "(0 < local_a0)" ( (binary_expression "0 < local_a0" number_literal < identifier) )) (goto_statement "goto LAB_001690e8;" goto statement_identifier ;)) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar10 = GetMagickResource(3);" (assignment_expression "uVar10 = GetMagickResource(3)" identifier = (call_expression "GetMagickResource(3)" identifier (argument_list "(3)" ( number_literal )))) ;) (expression_statement "uVar11 = GetMagickResourceLimit(3);" (assignment_expression "uVar11 = GetMagickResourceLimit(3)" identifier = (call_expression "GetMagickResourceLimit(3)" identifier (argument_list "(3)" ( number_literal )))) ;) (if_statement "if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }" if (parenthesized_expression "(uVar11 < uVar10)" ( (binary_expression "uVar11 < uVar10" identifier < identifier) )) (compound_statement "{\n        FUN_00167e4e(param_1);\n      }" { (expression_statement "FUN_00167e4e(param_1);" (call_expression "FUN_00167e4e(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_001693eb;" goto statement_identifier ;) })) (if_statement "if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }" if (parenthesized_expression "(4 < uVar1)" ( (binary_expression "4 < uVar1" number_literal < identifier) )) (compound_statement "{\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }" { (labeled_statement "LAB_001694d3:\n      local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_001693eb;" goto statement_identifier ;) })) (if_statement "if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" ( (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }" { (expression_statement "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));" (assignment_expression "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" identifier = (cast_expression "(void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" ( (binary_expression "lVar9 * lVar5 + *(long *)(param_1 + 0x4c0)" (binary_expression "lVar9 * lVar5" identifier * identifier) + (pointer_expression "*(long *)(param_1 + 0x4c0)" * (cast_expression "(long *)(param_1 + 0x4c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c0)" ( (binary_expression "param_1 + 0x4c0" identifier + number_literal) ))))) )))) ;) (expression_statement "local_a0 = 1;" (assignment_expression "local_a0 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0016912c:\n      lVar5 = 0;" statement_identifier : (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;)) (do_statement "do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);" do (compound_statement "{\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "memcpy(__dest,__src,uVar10);" (call_expression "memcpy(__dest,__src,uVar10)" identifier (argument_list "(__dest,__src,uVar10)" ( identifier , identifier , identifier ))) ;) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" identifier = (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * number_literal) * (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))))) )))) ;) (expression_statement "__dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);" (assignment_expression "__dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" identifier = (cast_expression "(void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" ( (binary_expression "(long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "*(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4" (binary_expression "*(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10)" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) * number_literal)) )))) ;) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar5 < local_a0)" ( (binary_expression "lVar5 < local_a0" identifier < identifier) )) ;) }) (else_clause "else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" else (compound_statement "{\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" { (expression_statement "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));" (assignment_expression "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" identifier = (cast_expression "(void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" ( (binary_expression "lVar9 * lVar5 + *(long *)(param_1 + 0x4c0)" (binary_expression "lVar9 * lVar5" identifier * identifier) + (pointer_expression "*(long *)(param_1 + 0x4c0)" * (cast_expression "(long *)(param_1 + 0x4c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c0)" ( (binary_expression "param_1 + 0x4c0" identifier + number_literal) ))))) )))) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if (0 < local_a0) goto LAB_0016912c;" if (parenthesized_expression "(0 < local_a0)" ( (binary_expression "0 < local_a0" number_literal < identifier) )) (goto_statement "goto LAB_0016912c;" goto statement_identifier ;)) }))) }))) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x2544) != 0)" ( (binary_expression "*(int *)(param_1 + 0x2544) != 0" (pointer_expression "*(int *)(param_1 + 0x2544)" * (cast_expression "(int *)(param_1 + 0x2544)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2544)" ( (binary_expression "param_1 + 0x2544" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }" { (expression_statement "uVar10 = *(ulong *)(param_1 + 0x18);" (assignment_expression "uVar10 = *(ulong *)(param_1 + 0x18)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(ulong *)(param_2 + 0x20);" (assignment_expression "uVar11 = *(ulong *)(param_2 + 0x20)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x20)" * (cast_expression "(ulong *)(param_2 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }" if (parenthesized_expression "(((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0))" ( (binary_expression "((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)" (parenthesized_expression "((uVar10 < 0x65) || (uVar11 == uVar10 - 1))" ( (binary_expression "(uVar10 < 0x65) || (uVar11 == uVar10 - 1)" (parenthesized_expression "(uVar10 < 0x65)" ( (binary_expression "uVar10 < 0x65" identifier < number_literal) )) || (parenthesized_expression "(uVar11 == uVar10 - 1)" ( (binary_expression "uVar11 == uVar10 - 1" identifier == (binary_expression "uVar10 - 1" identifier - number_literal)) ))) )) || (parenthesized_expression "(uVar11 % (uVar10 / 100) == 0)" ( (binary_expression "uVar11 % (uVar10 / 100) == 0" (binary_expression "uVar11 % (uVar10 / 100)" identifier % (parenthesized_expression "(uVar10 / 100)" ( (binary_expression "uVar10 / 100" identifier / number_literal) ))) == number_literal) ))) )) (compound_statement "{\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }" { (expression_statement "LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);" (call_expression "LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4)" identifier (argument_list "((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4)" ( (cast_expression "(double)*(ulong *)(param_2 + 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(ulong *)(param_2 + 8)" * (cast_expression "(ulong *)(param_2 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) , (cast_expression "(double)*(ulong *)(param_2 + 0x10)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(ulong *)(param_2 + 0x10)" * (cast_expression "(ulong *)(param_2 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) , (cast_expression "(double)*(long *)(param_2 + 0x18)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) , (cast_expression "(double)(long)uVar11" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) , number_literal , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , (string_literal ""%s[%.20gx%.20g%+.20g%+.20g]"" " string_content ") , (binary_expression "param_1 + 0x4d4" identifier + number_literal) ))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })) })) (labeled_statement "LAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n/* WARNING: Enum "LogEventType": Some values do not have unique names */\n\nMagickBooleanType\nWritePixelCachePixels(CacheInfo *cache_info,NexusInfo *nexus_info,ExceptionInfo *exception)\n\n{\n  CacheType CVar1;\n  long lVar2;\n  size_t sVar3;\n  MagickBooleanType MVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  MagickSizeType MVar8;\n  MagickSizeType MVar9;\n  char *pcVar10;\n  ulong __n;\n  long lVar11;\n  Quantum *__dest;\n  ulong uVar12;\n  ulong uVar13;\n  Quantum *pixels;\n  long in_FS_OFFSET;\n  size_t local_a0;\n  long local_98;\n  size_t local_90;\n  size_t local_70;\n  RectangleInfo region;\n  \n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  if (nexus_info->authentic_pixel_cache != MagickFalse) {\n    MVar4 = MagickTrue;\n    goto LAB_00169587;\n  }\n  lVar11 = cache_info->columns * (nexus_info->region).y + (nexus_info->region).x;\n  sVar3 = (nexus_info->region).width;\n  lVar5 = cache_info->number_channels * 4;\n  uVar13 = sVar3 * lVar5;\n  local_a0 = (nexus_info->region).height;\n  uVar12 = local_a0 * uVar13;\n  pixels = nexus_info->pixels;\n  CVar1 = cache_info->type;\n  local_90 = local_a0;\n  if (CVar1 == DistributedCache) {\n    LockSemaphoreInfo(cache_info->file_semaphore);\n    region.width = (nexus_info->region).width;\n    region.height = (nexus_info->region).height;\n    region.x = (nexus_info->region).x;\n    region.y = (nexus_info->region).y;\n    if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < (long)local_90);\n    }\n    else {\n      region.height = 1;\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(cache_info->file_semaphore);\nLAB_001693eb:\n    if (local_98 < (long)local_90) {\n      piVar7 = __errno_location();\n      pcVar10 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);\n      DestroyString(pcVar10);\n      MVar4 = MagickFalse;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (CVar1 < MapCache) {\n      if (CVar1 != DiskCache) goto LAB_001694d3;\n      LockSemaphoreInfo(cache_info->file_semaphore);\n      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);\n      if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }\n      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      MVar8 = GetMagickResource(FileResource);\n      MVar9 = GetMagickResourceLimit(FileResource);\n      if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }\n      UnlockSemaphoreInfo(cache_info->file_semaphore);\n      goto LAB_001693eb;\n    }\n    if (MemoryCache < CVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (cache_info->columns == sVar3) {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);\n    }\n    else {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }\n  }\n  MVar4 = MagickTrue;\n  if (cache_info->debug != MagickFalse) {\n    uVar12 = cache_info->rows;\n    uVar13 = (nexus_info->region).y;\n    if (((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0)) {\n      LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename);\n      MVar4 = MagickTrue;\n    }\n  }\nLAB_00169587:\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment comment comment comment comment comment (function_definition "MagickBooleanType\nWritePixelCachePixels(CacheInfo *cache_info,NexusInfo *nexus_info,ExceptionInfo *exception)\n\n{\n  CacheType CVar1;\n  long lVar2;\n  size_t sVar3;\n  MagickBooleanType MVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  MagickSizeType MVar8;\n  MagickSizeType MVar9;\n  char *pcVar10;\n  ulong __n;\n  long lVar11;\n  Quantum *__dest;\n  ulong uVar12;\n  ulong uVar13;\n  Quantum *pixels;\n  long in_FS_OFFSET;\n  size_t local_a0;\n  long local_98;\n  size_t local_90;\n  size_t local_70;\n  RectangleInfo region;\n  \n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  if (nexus_info->authentic_pixel_cache != MagickFalse) {\n    MVar4 = MagickTrue;\n    goto LAB_00169587;\n  }\n  lVar11 = cache_info->columns * (nexus_info->region).y + (nexus_info->region).x;\n  sVar3 = (nexus_info->region).width;\n  lVar5 = cache_info->number_channels * 4;\n  uVar13 = sVar3 * lVar5;\n  local_a0 = (nexus_info->region).height;\n  uVar12 = local_a0 * uVar13;\n  pixels = nexus_info->pixels;\n  CVar1 = cache_info->type;\n  local_90 = local_a0;\n  if (CVar1 == DistributedCache) {\n    LockSemaphoreInfo(cache_info->file_semaphore);\n    region.width = (nexus_info->region).width;\n    region.height = (nexus_info->region).height;\n    region.x = (nexus_info->region).x;\n    region.y = (nexus_info->region).y;\n    if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < (long)local_90);\n    }\n    else {\n      region.height = 1;\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(cache_info->file_semaphore);\nLAB_001693eb:\n    if (local_98 < (long)local_90) {\n      piVar7 = __errno_location();\n      pcVar10 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);\n      DestroyString(pcVar10);\n      MVar4 = MagickFalse;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (CVar1 < MapCache) {\n      if (CVar1 != DiskCache) goto LAB_001694d3;\n      LockSemaphoreInfo(cache_info->file_semaphore);\n      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);\n      if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }\n      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      MVar8 = GetMagickResource(FileResource);\n      MVar9 = GetMagickResourceLimit(FileResource);\n      if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }\n      UnlockSemaphoreInfo(cache_info->file_semaphore);\n      goto LAB_001693eb;\n    }\n    if (MemoryCache < CVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (cache_info->columns == sVar3) {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);\n    }\n    else {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }\n  }\n  MVar4 = MagickTrue;\n  if (cache_info->debug != MagickFalse) {\n    uVar12 = cache_info->rows;\n    uVar13 = (nexus_info->region).y;\n    if (((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0)) {\n      LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename);\n      MVar4 = MagickTrue;\n    }\n  }\nLAB_00169587:\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (function_declarator "WritePixelCachePixels(CacheInfo *cache_info,NexusInfo *nexus_info,ExceptionInfo *exception)" identifier (parameter_list "(CacheInfo *cache_info,NexusInfo *nexus_info,ExceptionInfo *exception)" ( (parameter_declaration "CacheInfo *cache_info" type_identifier (pointer_declarator "*cache_info" * identifier)) , (parameter_declaration "NexusInfo *nexus_info" type_identifier (pointer_declarator "*nexus_info" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  CacheType CVar1;\n  long lVar2;\n  size_t sVar3;\n  MagickBooleanType MVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  MagickSizeType MVar8;\n  MagickSizeType MVar9;\n  char *pcVar10;\n  ulong __n;\n  long lVar11;\n  Quantum *__dest;\n  ulong uVar12;\n  ulong uVar13;\n  Quantum *pixels;\n  long in_FS_OFFSET;\n  size_t local_a0;\n  long local_98;\n  size_t local_90;\n  size_t local_70;\n  RectangleInfo region;\n  \n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  if (nexus_info->authentic_pixel_cache != MagickFalse) {\n    MVar4 = MagickTrue;\n    goto LAB_00169587;\n  }\n  lVar11 = cache_info->columns * (nexus_info->region).y + (nexus_info->region).x;\n  sVar3 = (nexus_info->region).width;\n  lVar5 = cache_info->number_channels * 4;\n  uVar13 = sVar3 * lVar5;\n  local_a0 = (nexus_info->region).height;\n  uVar12 = local_a0 * uVar13;\n  pixels = nexus_info->pixels;\n  CVar1 = cache_info->type;\n  local_90 = local_a0;\n  if (CVar1 == DistributedCache) {\n    LockSemaphoreInfo(cache_info->file_semaphore);\n    region.width = (nexus_info->region).width;\n    region.height = (nexus_info->region).height;\n    region.x = (nexus_info->region).x;\n    region.y = (nexus_info->region).y;\n    if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < (long)local_90);\n    }\n    else {\n      region.height = 1;\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(cache_info->file_semaphore);\nLAB_001693eb:\n    if (local_98 < (long)local_90) {\n      piVar7 = __errno_location();\n      pcVar10 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);\n      DestroyString(pcVar10);\n      MVar4 = MagickFalse;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (CVar1 < MapCache) {\n      if (CVar1 != DiskCache) goto LAB_001694d3;\n      LockSemaphoreInfo(cache_info->file_semaphore);\n      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);\n      if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }\n      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      MVar8 = GetMagickResource(FileResource);\n      MVar9 = GetMagickResourceLimit(FileResource);\n      if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }\n      UnlockSemaphoreInfo(cache_info->file_semaphore);\n      goto LAB_001693eb;\n    }\n    if (MemoryCache < CVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (cache_info->columns == sVar3) {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);\n    }\n    else {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }\n  }\n  MVar4 = MagickTrue;\n  if (cache_info->debug != MagickFalse) {\n    uVar12 = cache_info->rows;\n    uVar13 = (nexus_info->region).y;\n    if (((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0)) {\n      LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename);\n      MVar4 = MagickTrue;\n    }\n  }\nLAB_00169587:\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "CacheType CVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "MagickBooleanType MVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "MagickSizeType MVar8;" type_identifier identifier ;) (declaration "MagickSizeType MVar9;" type_identifier identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "Quantum *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "Quantum *pixels;" type_identifier (pointer_declarator "*pixels" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t local_a0;" primitive_type identifier ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t local_90;" primitive_type identifier ;) (declaration "size_t local_70;" primitive_type identifier ;) (declaration "RectangleInfo region;" type_identifier identifier ;) (expression_statement "lVar2 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar2 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (nexus_info->authentic_pixel_cache != MagickFalse) {\n    MVar4 = MagickTrue;\n    goto LAB_00169587;\n  }" if (parenthesized_expression "(nexus_info->authentic_pixel_cache != MagickFalse)" ( (binary_expression "nexus_info->authentic_pixel_cache != MagickFalse" (field_expression "nexus_info->authentic_pixel_cache" identifier -> field_identifier) != identifier) )) (compound_statement "{\n    MVar4 = MagickTrue;\n    goto LAB_00169587;\n  }" { (expression_statement "MVar4 = MagickTrue;" (assignment_expression "MVar4 = MagickTrue" identifier = identifier) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) })) (expression_statement "lVar11 = cache_info->columns * (nexus_info->region).y + (nexus_info->region).x;" (assignment_expression "lVar11 = cache_info->columns * (nexus_info->region).y + (nexus_info->region).x" identifier = (binary_expression "cache_info->columns * (nexus_info->region).y + (nexus_info->region).x" (binary_expression "cache_info->columns * (nexus_info->region).y" (field_expression "cache_info->columns" identifier -> field_identifier) * (field_expression "(nexus_info->region).y" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) + (field_expression "(nexus_info->region).x" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "sVar3 = (nexus_info->region).width;" (assignment_expression "sVar3 = (nexus_info->region).width" identifier = (field_expression "(nexus_info->region).width" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "lVar5 = cache_info->number_channels * 4;" (assignment_expression "lVar5 = cache_info->number_channels * 4" identifier = (binary_expression "cache_info->number_channels * 4" (field_expression "cache_info->number_channels" identifier -> field_identifier) * number_literal)) ;) (expression_statement "uVar13 = sVar3 * lVar5;" (assignment_expression "uVar13 = sVar3 * lVar5" identifier = (binary_expression "sVar3 * lVar5" identifier * identifier)) ;) (expression_statement "local_a0 = (nexus_info->region).height;" (assignment_expression "local_a0 = (nexus_info->region).height" identifier = (field_expression "(nexus_info->region).height" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar12 = local_a0 * uVar13;" (assignment_expression "uVar12 = local_a0 * uVar13" identifier = (binary_expression "local_a0 * uVar13" identifier * identifier)) ;) (expression_statement "pixels = nexus_info->pixels;" (assignment_expression "pixels = nexus_info->pixels" identifier = (field_expression "nexus_info->pixels" identifier -> field_identifier)) ;) (expression_statement "CVar1 = cache_info->type;" (assignment_expression "CVar1 = cache_info->type" identifier = (field_expression "cache_info->type" identifier -> field_identifier)) ;) (expression_statement "local_90 = local_a0;" (assignment_expression "local_90 = local_a0" identifier = identifier) ;) (if_statement "if (CVar1 == DistributedCache) {\n    LockSemaphoreInfo(cache_info->file_semaphore);\n    region.width = (nexus_info->region).width;\n    region.height = (nexus_info->region).height;\n    region.x = (nexus_info->region).x;\n    region.y = (nexus_info->region).y;\n    if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < (long)local_90);\n    }\n    else {\n      region.height = 1;\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(cache_info->file_semaphore);\nLAB_001693eb:\n    if (local_98 < (long)local_90) {\n      piVar7 = __errno_location();\n      pcVar10 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);\n      DestroyString(pcVar10);\n      MVar4 = MagickFalse;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (CVar1 < MapCache) {\n      if (CVar1 != DiskCache) goto LAB_001694d3;\n      LockSemaphoreInfo(cache_info->file_semaphore);\n      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);\n      if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }\n      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      MVar8 = GetMagickResource(FileResource);\n      MVar9 = GetMagickResourceLimit(FileResource);\n      if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }\n      UnlockSemaphoreInfo(cache_info->file_semaphore);\n      goto LAB_001693eb;\n    }\n    if (MemoryCache < CVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (cache_info->columns == sVar3) {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);\n    }\n    else {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }\n  }" if (parenthesized_expression "(CVar1 == DistributedCache)" ( (binary_expression "CVar1 == DistributedCache" identifier == identifier) )) (compound_statement "{\n    LockSemaphoreInfo(cache_info->file_semaphore);\n    region.width = (nexus_info->region).width;\n    region.height = (nexus_info->region).height;\n    region.x = (nexus_info->region).x;\n    region.y = (nexus_info->region).y;\n    if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < (long)local_90);\n    }\n    else {\n      region.height = 1;\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(cache_info->file_semaphore);\nLAB_001693eb:\n    if (local_98 < (long)local_90) {\n      piVar7 = __errno_location();\n      pcVar10 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);\n      DestroyString(pcVar10);\n      MVar4 = MagickFalse;\n      goto LAB_00169587;\n    }\n  }" { (expression_statement "LockSemaphoreInfo(cache_info->file_semaphore);" (call_expression "LockSemaphoreInfo(cache_info->file_semaphore)" identifier (argument_list "(cache_info->file_semaphore)" ( (field_expression "cache_info->file_semaphore" identifier -> field_identifier) ))) ;) (expression_statement "region.width = (nexus_info->region).width;" (assignment_expression "region.width = (nexus_info->region).width" (field_expression "region.width" identifier . field_identifier) = (field_expression "(nexus_info->region).width" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "region.height = (nexus_info->region).height;" (assignment_expression "region.height = (nexus_info->region).height" (field_expression "region.height" identifier . field_identifier) = (field_expression "(nexus_info->region).height" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "region.x = (nexus_info->region).x;" (assignment_expression "region.x = (nexus_info->region).x" (field_expression "region.x" identifier . field_identifier) = (field_expression "(nexus_info->region).x" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "region.y = (nexus_info->region).y;" (assignment_expression "region.y = (nexus_info->region).y" (field_expression "region.y" identifier . field_identifier) = (field_expression "(nexus_info->region).y" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < (long)local_90);\n    }\n    else {\n      region.height = 1;\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" if (parenthesized_expression "((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001))" ( (binary_expression "(cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)" (parenthesized_expression "(cache_info->columns == (nexus_info->region).width)" ( (binary_expression "cache_info->columns == (nexus_info->region).width" (field_expression "cache_info->columns" identifier -> field_identifier) == (field_expression "(nexus_info->region).width" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) )) && (parenthesized_expression "(uVar12 < 0x14001)" ( (binary_expression "uVar12 < 0x14001" identifier < number_literal) ))) )) (compound_statement "{\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < (long)local_90);\n    }" { (expression_statement "local_90 = 1;" (assignment_expression "local_90 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00169365:\n      local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (do_statement "do {\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < (long)local_90);" do (compound_statement "{\n        MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);\n        if (uVar12 != MVar8) break;\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        region.y = region.y + 1;\n        local_98 = local_98 + 1;\n      }" { (expression_statement "MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels);" (assignment_expression "MVar8 = WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels)" identifier = (call_expression "WriteDistributePixelCachePixels\n                          ((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels)" identifier (argument_list "((DistributeCacheInfo *)cache_info->server_info,&region,uVar12,\n                           (uchar *)pixels)" ( (cast_expression "(DistributeCacheInfo *)cache_info->server_info" ( (type_descriptor "DistributeCacheInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "cache_info->server_info" identifier -> field_identifier)) , (pointer_expression "&region" & identifier) , identifier , (cast_expression "(uchar *)pixels" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (uVar12 != MVar8) break;" if (parenthesized_expression "(uVar12 != MVar8)" ( (binary_expression "uVar12 != MVar8" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);" (assignment_expression "pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" identifier = (cast_expression "(Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" ( (binary_expression "(long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width" (cast_expression "(long)pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "cache_info->number_channels * 4 * (nexus_info->region).width" (binary_expression "cache_info->number_channels * 4" (field_expression "cache_info->number_channels" identifier -> field_identifier) * number_literal) * (field_expression "(nexus_info->region).width" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier))) )))) ;) (expression_statement "region.y = region.y + 1;" (assignment_expression "region.y = region.y + 1" (field_expression "region.y" identifier . field_identifier) = (binary_expression "region.y + 1" (field_expression "region.y" identifier . field_identifier) + number_literal)) ;) (expression_statement "local_98 = local_98 + 1;" (assignment_expression "local_98 = local_98 + 1" identifier = (binary_expression "local_98 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_98 < (long)local_90)" ( (binary_expression "local_98 < (long)local_90" identifier < (cast_expression "(long)local_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) }) (else_clause "else {\n      region.height = 1;\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" else (compound_statement "{\n      region.height = 1;\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" { (expression_statement "region.height = 1;" (assignment_expression "region.height = 1" (field_expression "region.height" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar12 = uVar13;" (assignment_expression "uVar12 = uVar13" identifier = identifier) ;) (if_statement "if (0 < (long)local_a0) goto LAB_00169365;" if (parenthesized_expression "(0 < (long)local_a0)" ( (binary_expression "0 < (long)local_a0" number_literal < (cast_expression "(long)local_a0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_00169365;" goto statement_identifier ;)) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) }))) (expression_statement "UnlockSemaphoreInfo(cache_info->file_semaphore);" (call_expression "UnlockSemaphoreInfo(cache_info->file_semaphore)" identifier (argument_list "(cache_info->file_semaphore)" ( (field_expression "cache_info->file_semaphore" identifier -> field_identifier) ))) ;) (labeled_statement "LAB_001693eb:\n    if (local_98 < (long)local_90) {\n      piVar7 = __errno_location();\n      pcVar10 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);\n      DestroyString(pcVar10);\n      MVar4 = MagickFalse;\n      goto LAB_00169587;\n    }" statement_identifier : (if_statement "if (local_98 < (long)local_90) {\n      piVar7 = __errno_location();\n      pcVar10 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);\n      DestroyString(pcVar10);\n      MVar4 = MagickFalse;\n      goto LAB_00169587;\n    }" if (parenthesized_expression "(local_98 < (long)local_90)" ( (binary_expression "local_98 < (long)local_90" identifier < (cast_expression "(long)local_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n      piVar7 = __errno_location();\n      pcVar10 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);\n      DestroyString(pcVar10);\n      MVar4 = MagickFalse;\n      goto LAB_00169587;\n    }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar10 = GetExceptionMessage(*piVar7);" (assignment_expression "pcVar10 = GetExceptionMessage(*piVar7)" identifier = (call_expression "GetExceptionMessage(*piVar7)" identifier (argument_list "(*piVar7)" ( (pointer_expression "*piVar7" * identifier) )))) ;) (expression_statement "ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);" (call_expression "ThrowMagickException\n                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10)" identifier (argument_list "(exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,\n                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10)" ( identifier , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , identifier , (string_literal ""UnableToWritePixelCache"" " string_content ") , (string_literal ""\'%s\': %s"" " escape_sequence string_content escape_sequence string_content ") , (field_expression "cache_info->cache_filename" identifier -> field_identifier) , identifier ))) ;) (expression_statement "DestroyString(pcVar10);" (call_expression "DestroyString(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "MVar4 = MagickFalse;" (assignment_expression "MVar4 = MagickFalse" identifier = identifier) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (CVar1 < MapCache) {\n      if (CVar1 != DiskCache) goto LAB_001694d3;\n      LockSemaphoreInfo(cache_info->file_semaphore);\n      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);\n      if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }\n      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      MVar8 = GetMagickResource(FileResource);\n      MVar9 = GetMagickResourceLimit(FileResource);\n      if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }\n      UnlockSemaphoreInfo(cache_info->file_semaphore);\n      goto LAB_001693eb;\n    }\n    if (MemoryCache < CVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (cache_info->columns == sVar3) {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);\n    }\n    else {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }\n  }" else (compound_statement "{\n    if (CVar1 < MapCache) {\n      if (CVar1 != DiskCache) goto LAB_001694d3;\n      LockSemaphoreInfo(cache_info->file_semaphore);\n      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);\n      if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }\n      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      MVar8 = GetMagickResource(FileResource);\n      MVar9 = GetMagickResourceLimit(FileResource);\n      if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }\n      UnlockSemaphoreInfo(cache_info->file_semaphore);\n      goto LAB_001693eb;\n    }\n    if (MemoryCache < CVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (cache_info->columns == sVar3) {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);\n    }\n    else {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }\n  }" { (if_statement "if (CVar1 < MapCache) {\n      if (CVar1 != DiskCache) goto LAB_001694d3;\n      LockSemaphoreInfo(cache_info->file_semaphore);\n      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);\n      if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }\n      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      MVar8 = GetMagickResource(FileResource);\n      MVar9 = GetMagickResourceLimit(FileResource);\n      if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }\n      UnlockSemaphoreInfo(cache_info->file_semaphore);\n      goto LAB_001693eb;\n    }" if (parenthesized_expression "(CVar1 < MapCache)" ( (binary_expression "CVar1 < MapCache" identifier < identifier) )) (compound_statement "{\n      if (CVar1 != DiskCache) goto LAB_001694d3;\n      LockSemaphoreInfo(cache_info->file_semaphore);\n      MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);\n      if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }\n      if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      MVar8 = GetMagickResource(FileResource);\n      MVar9 = GetMagickResourceLimit(FileResource);\n      if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }\n      UnlockSemaphoreInfo(cache_info->file_semaphore);\n      goto LAB_001693eb;\n    }" { (if_statement "if (CVar1 != DiskCache) goto LAB_001694d3;" if (parenthesized_expression "(CVar1 != DiskCache)" ( (binary_expression "CVar1 != DiskCache" identifier != identifier) )) (goto_statement "goto LAB_001694d3;" goto statement_identifier ;)) (expression_statement "LockSemaphoreInfo(cache_info->file_semaphore);" (call_expression "LockSemaphoreInfo(cache_info->file_semaphore)" identifier (argument_list "(cache_info->file_semaphore)" ( (field_expression "cache_info->file_semaphore" identifier -> field_identifier) ))) ;) (expression_statement "MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode);" (assignment_expression "MVar4 = OpenPixelCacheOnDisk(cache_info,IOMode)" identifier = (call_expression "OpenPixelCacheOnDisk(cache_info,IOMode)" identifier (argument_list "(cache_info,IOMode)" ( identifier , identifier )))) ;) (if_statement "if (MVar4 == MagickFalse) {\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }" if (parenthesized_expression "(MVar4 == MagickFalse)" ( (binary_expression "MVar4 == MagickFalse" identifier == identifier) )) (compound_statement "{\n        piVar7 = __errno_location();\n        pcVar10 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);\n        DestroyString(pcVar10);\n        UnlockSemaphoreInfo(cache_info->file_semaphore);\n        MVar4 = MagickFalse;\n        goto LAB_00169587;\n      }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar10 = GetExceptionMessage(*piVar7);" (assignment_expression "pcVar10 = GetExceptionMessage(*piVar7)" identifier = (call_expression "GetExceptionMessage(*piVar7)" identifier (argument_list "(*piVar7)" ( (pointer_expression "*piVar7" * identifier) )))) ;) (expression_statement "ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);" (call_expression "ThrowMagickException\n                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10)" identifier (argument_list "(exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,\n                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10)" ( identifier , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , identifier , (string_literal ""UnableToOpenFile"" " string_content ") , (string_literal ""\'%s\': %s"" " escape_sequence string_content escape_sequence string_content ") , (field_expression "cache_info->cache_filename" identifier -> field_identifier) , identifier ))) ;) (expression_statement "DestroyString(pcVar10);" (call_expression "DestroyString(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "UnlockSemaphoreInfo(cache_info->file_semaphore);" (call_expression "UnlockSemaphoreInfo(cache_info->file_semaphore)" identifier (argument_list "(cache_info->file_semaphore)" ( (field_expression "cache_info->file_semaphore" identifier -> field_identifier) ))) ;) (expression_statement "MVar4 = MagickFalse;" (assignment_expression "MVar4 = MagickFalse" identifier = identifier) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) })) (if_statement "if ((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }\n      else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" if (parenthesized_expression "((cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001))" ( (binary_expression "(cache_info->columns == (nexus_info->region).width) && (uVar12 < 0x14001)" (parenthesized_expression "(cache_info->columns == (nexus_info->region).width)" ( (binary_expression "cache_info->columns == (nexus_info->region).width" (field_expression "cache_info->columns" identifier -> field_identifier) == (field_expression "(nexus_info->region).width" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) )) && (parenthesized_expression "(uVar12 < 0x14001)" ( (binary_expression "uVar12 < 0x14001" identifier < number_literal) ))) )) (compound_statement "{\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);\n      }" { (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001690e8:\n        local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (do_statement "do {\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        } while (local_98 < (long)local_70);" do (compound_statement "{\n          sVar3 = cache_info->number_channels;\n          lVar5 = cache_info->offset;\n          if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }\n          local_90 = local_70;\n          if (uVar12 != uVar13) break;\n          pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n          lVar11 = lVar11 + cache_info->columns;\n          local_98 = local_98 + 1;\n        }" { (expression_statement "sVar3 = cache_info->number_channels;" (assignment_expression "sVar3 = cache_info->number_channels" identifier = (field_expression "cache_info->number_channels" identifier -> field_identifier)) ;) (expression_statement "lVar5 = cache_info->offset;" (assignment_expression "lVar5 = cache_info->offset" identifier = (field_expression "cache_info->offset" identifier -> field_identifier)) ;) (if_statement "if ((long)uVar12 < 1) {\n            uVar13 = 0;\n          }\n          else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }" if (parenthesized_expression "((long)uVar12 < 1)" ( (binary_expression "(long)uVar12 < 1" (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n            uVar13 = 0;\n          }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }" else (compound_statement "{\n            uVar13 = 0;\n            do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);\n          }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            } while ((long)uVar13 < (long)uVar12);" do (compound_statement "{\n              __n = uVar12 - uVar13;\n              if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar13 = uVar13 + lVar6;\n            }" { (expression_statement "__n = uVar12 - uVar13;" (assignment_expression "__n = uVar12 - uVar13" identifier = (binary_expression "uVar12 - uVar13" identifier - identifier)) ;) (if_statement "if (0x7ffffffffffffffe < uVar12 - uVar13) {\n                __n = 0x7fffffffffffffff;\n              }" if (parenthesized_expression "(0x7ffffffffffffffe < uVar12 - uVar13)" ( (binary_expression "0x7ffffffffffffffe < uVar12 - uVar13" number_literal < (binary_expression "uVar12 - uVar13" identifier - identifier)) )) (compound_statement "{\n                __n = 0x7fffffffffffffff;\n              }" { (expression_statement "__n = 0x7fffffffffffffff;" (assignment_expression "__n = 0x7fffffffffffffff" identifier = number_literal) ;) })) (expression_statement "lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13);" (assignment_expression "lVar6 = pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13)" identifier = (call_expression "pwrite(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13)" identifier (argument_list "(cache_info->file,(void *)((long)pixels + uVar13),__n,\n                             sVar3 * 4 * lVar11 + lVar5 + uVar13)" ( (field_expression "cache_info->file" identifier -> field_identifier) , (cast_expression "(void *)((long)pixels + uVar13)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pixels + uVar13)" ( (binary_expression "(long)pixels + uVar13" (cast_expression "(long)pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , identifier , (binary_expression "sVar3 * 4 * lVar11 + lVar5 + uVar13" (binary_expression "sVar3 * 4 * lVar11 + lVar5" (binary_expression "sVar3 * 4 * lVar11" (binary_expression "sVar3 * 4" identifier * number_literal) * identifier) + identifier) + identifier) )))) ;) (if_statement "if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }" if (parenthesized_expression "(lVar6 < 1)" ( (binary_expression "lVar6 < 1" identifier < number_literal) )) (compound_statement "{\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*piVar7 != 4) break;" if (parenthesized_expression "(*piVar7 != 4)" ( (binary_expression "*piVar7 != 4" (pointer_expression "*piVar7" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) })) (expression_statement "uVar13 = uVar13 + lVar6;" (assignment_expression "uVar13 = uVar13 + lVar6" identifier = (binary_expression "uVar13 + lVar6" identifier + identifier)) ;) }) while (parenthesized_expression "((long)uVar13 < (long)uVar12)" ( (binary_expression "(long)uVar13 < (long)uVar12" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) }))) (expression_statement "local_90 = local_70;" (assignment_expression "local_90 = local_70" identifier = identifier) ;) (if_statement "if (uVar12 != uVar13) break;" if (parenthesized_expression "(uVar12 != uVar13)" ( (binary_expression "uVar12 != uVar13" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);" (assignment_expression "pixels = (Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" identifier = (cast_expression "(Quantum *)\n                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" ( (binary_expression "(long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width" (cast_expression "(long)pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "cache_info->number_channels * 4 * (nexus_info->region).width" (binary_expression "cache_info->number_channels * 4" (field_expression "cache_info->number_channels" identifier -> field_identifier) * number_literal) * (field_expression "(nexus_info->region).width" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier))) )))) ;) (expression_statement "lVar11 = lVar11 + cache_info->columns;" (assignment_expression "lVar11 = lVar11 + cache_info->columns" identifier = (binary_expression "lVar11 + cache_info->columns" identifier + (field_expression "cache_info->columns" identifier -> field_identifier))) ;) (expression_statement "local_98 = local_98 + 1;" (assignment_expression "local_98 = local_98 + 1" identifier = (binary_expression "local_98 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_98 < (long)local_70)" ( (binary_expression "local_98 < (long)local_70" identifier < (cast_expression "(long)local_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) }) (else_clause "else {\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" else (compound_statement "{\n        uVar12 = uVar13;\n        local_70 = local_a0;\n        if (0 < (long)local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" { (expression_statement "uVar12 = uVar13;" (assignment_expression "uVar12 = uVar13" identifier = identifier) ;) (expression_statement "local_70 = local_a0;" (assignment_expression "local_70 = local_a0" identifier = identifier) ;) (if_statement "if (0 < (long)local_a0) goto LAB_001690e8;" if (parenthesized_expression "(0 < (long)local_a0)" ( (binary_expression "0 < (long)local_a0" number_literal < (cast_expression "(long)local_a0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_001690e8;" goto statement_identifier ;)) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) }))) (expression_statement "MVar8 = GetMagickResource(FileResource);" (assignment_expression "MVar8 = GetMagickResource(FileResource)" identifier = (call_expression "GetMagickResource(FileResource)" identifier (argument_list "(FileResource)" ( identifier )))) ;) (expression_statement "MVar9 = GetMagickResourceLimit(FileResource);" (assignment_expression "MVar9 = GetMagickResourceLimit(FileResource)" identifier = (call_expression "GetMagickResourceLimit(FileResource)" identifier (argument_list "(FileResource)" ( identifier )))) ;) (if_statement "if (MVar9 < MVar8) {\n        ClosePixelCacheOnDisk(cache_info);\n      }" if (parenthesized_expression "(MVar9 < MVar8)" ( (binary_expression "MVar9 < MVar8" identifier < identifier) )) (compound_statement "{\n        ClosePixelCacheOnDisk(cache_info);\n      }" { (expression_statement "ClosePixelCacheOnDisk(cache_info);" (call_expression "ClosePixelCacheOnDisk(cache_info)" identifier (argument_list "(cache_info)" ( identifier ))) ;) })) (expression_statement "UnlockSemaphoreInfo(cache_info->file_semaphore);" (call_expression "UnlockSemaphoreInfo(cache_info->file_semaphore)" identifier (argument_list "(cache_info->file_semaphore)" ( (field_expression "cache_info->file_semaphore" identifier -> field_identifier) ))) ;) (goto_statement "goto LAB_001693eb;" goto statement_identifier ;) })) (if_statement "if (MemoryCache < CVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }" if (parenthesized_expression "(MemoryCache < CVar1)" ( (binary_expression "MemoryCache < CVar1" identifier < identifier) )) (compound_statement "{\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }" { (labeled_statement "LAB_001694d3:\n      local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_001693eb;" goto statement_identifier ;) })) (if_statement "if (cache_info->columns == sVar3) {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);\n    }\n    else {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }" if (parenthesized_expression "(cache_info->columns == sVar3)" ( (binary_expression "cache_info->columns == sVar3" (field_expression "cache_info->columns" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);\n    }" { (expression_statement "__dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);" (assignment_expression "__dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels)" identifier = (cast_expression "(Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels)" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 * lVar5 + (long)cache_info->pixels)" ( (binary_expression "lVar11 * lVar5 + (long)cache_info->pixels" (binary_expression "lVar11 * lVar5" identifier * identifier) + (cast_expression "(long)cache_info->pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "cache_info->pixels" identifier -> field_identifier))) )))) ;) (expression_statement "local_a0 = 1;" (assignment_expression "local_a0 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0016912c:\n      lVar5 = 0;" statement_identifier : (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;)) (do_statement "do {\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < (long)local_a0);" do (compound_statement "{\n        memcpy(__dest,pixels,uVar12);\n        pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);\n        __dest = __dest + cache_info->number_channels * cache_info->columns;\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "memcpy(__dest,pixels,uVar12);" (call_expression "memcpy(__dest,pixels,uVar12)" identifier (argument_list "(__dest,pixels,uVar12)" ( identifier , identifier , identifier ))) ;) (expression_statement "pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);" (assignment_expression "pixels = (Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" identifier = (cast_expression "(Quantum *)\n                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width)" ( (binary_expression "(long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width" (cast_expression "(long)pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "cache_info->number_channels * 4 * (nexus_info->region).width" (binary_expression "cache_info->number_channels * 4" (field_expression "cache_info->number_channels" identifier -> field_identifier) * number_literal) * (field_expression "(nexus_info->region).width" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier))) )))) ;) (expression_statement "__dest = __dest + cache_info->number_channels * cache_info->columns;" (assignment_expression "__dest = __dest + cache_info->number_channels * cache_info->columns" identifier = (binary_expression "__dest + cache_info->number_channels * cache_info->columns" identifier + (binary_expression "cache_info->number_channels * cache_info->columns" (field_expression "cache_info->number_channels" identifier -> field_identifier) * (field_expression "cache_info->columns" identifier -> field_identifier)))) ;) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar5 < (long)local_a0)" ( (binary_expression "lVar5 < (long)local_a0" identifier < (cast_expression "(long)local_a0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) }) (else_clause "else {\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }" else (compound_statement "{\n      __dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);\n      uVar12 = uVar13;\n      if (0 < (long)local_a0) goto LAB_0016912c;\n    }" { (expression_statement "__dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels);" (assignment_expression "__dest = (Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels)" identifier = (cast_expression "(Quantum *)(lVar11 * lVar5 + (long)cache_info->pixels)" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 * lVar5 + (long)cache_info->pixels)" ( (binary_expression "lVar11 * lVar5 + (long)cache_info->pixels" (binary_expression "lVar11 * lVar5" identifier * identifier) + (cast_expression "(long)cache_info->pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "cache_info->pixels" identifier -> field_identifier))) )))) ;) (expression_statement "uVar12 = uVar13;" (assignment_expression "uVar12 = uVar13" identifier = identifier) ;) (if_statement "if (0 < (long)local_a0) goto LAB_0016912c;" if (parenthesized_expression "(0 < (long)local_a0)" ( (binary_expression "0 < (long)local_a0" number_literal < (cast_expression "(long)local_a0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_0016912c;" goto statement_identifier ;)) }))) }))) (expression_statement "MVar4 = MagickTrue;" (assignment_expression "MVar4 = MagickTrue" identifier = identifier) ;) (if_statement "if (cache_info->debug != MagickFalse) {\n    uVar12 = cache_info->rows;\n    uVar13 = (nexus_info->region).y;\n    if (((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0)) {\n      LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename);\n      MVar4 = MagickTrue;\n    }\n  }" if (parenthesized_expression "(cache_info->debug != MagickFalse)" ( (binary_expression "cache_info->debug != MagickFalse" (field_expression "cache_info->debug" identifier -> field_identifier) != identifier) )) (compound_statement "{\n    uVar12 = cache_info->rows;\n    uVar13 = (nexus_info->region).y;\n    if (((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0)) {\n      LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename);\n      MVar4 = MagickTrue;\n    }\n  }" { (expression_statement "uVar12 = cache_info->rows;" (assignment_expression "uVar12 = cache_info->rows" identifier = (field_expression "cache_info->rows" identifier -> field_identifier)) ;) (expression_statement "uVar13 = (nexus_info->region).y;" (assignment_expression "uVar13 = (nexus_info->region).y" identifier = (field_expression "(nexus_info->region).y" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0)) {\n      LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename);\n      MVar4 = MagickTrue;\n    }" if (parenthesized_expression "(((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0))" ( (binary_expression "((uVar12 < 0x65) || (uVar13 == uVar12 - 1)) || (uVar13 % (uVar12 / 100) == 0)" (parenthesized_expression "((uVar12 < 0x65) || (uVar13 == uVar12 - 1))" ( (binary_expression "(uVar12 < 0x65) || (uVar13 == uVar12 - 1)" (parenthesized_expression "(uVar12 < 0x65)" ( (binary_expression "uVar12 < 0x65" identifier < number_literal) )) || (parenthesized_expression "(uVar13 == uVar12 - 1)" ( (binary_expression "uVar13 == uVar12 - 1" identifier == (binary_expression "uVar12 - 1" identifier - number_literal)) ))) )) || (parenthesized_expression "(uVar13 % (uVar12 / 100) == 0)" ( (binary_expression "uVar13 % (uVar12 / 100) == 0" (binary_expression "uVar13 % (uVar12 / 100)" identifier % (parenthesized_expression "(uVar12 / 100)" ( (binary_expression "uVar12 / 100" identifier / number_literal) ))) == number_literal) ))) )) (compound_statement "{\n      LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename);\n      MVar4 = MagickTrue;\n    }" { (expression_statement "LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename);" (call_expression "LogMagickEvent(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename)" identifier (argument_list "(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,\n                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,\n                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,\n                     (double)(long)uVar13,cache_info->filename)" ( identifier , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , (string_literal ""%s[%.20gx%.20g%+.20g%+.20g]"" " string_content ") , (cast_expression "(double)(nexus_info->region).width" ( (type_descriptor "double" primitive_type) ) (field_expression "(nexus_info->region).width" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) , (cast_expression "(double)(nexus_info->region).height" ( (type_descriptor "double" primitive_type) ) (field_expression "(nexus_info->region).height" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) , (cast_expression "(double)(nexus_info->region).x" ( (type_descriptor "double" primitive_type) ) (field_expression "(nexus_info->region).x" (parenthesized_expression "(nexus_info->region)" ( (field_expression "nexus_info->region" identifier -> field_identifier) )) . field_identifier)) , (cast_expression "(double)(long)uVar13" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) , (field_expression "cache_info->filename" identifier -> field_identifier) ))) ;) (expression_statement "MVar4 = MagickTrue;" (assignment_expression "MVar4 = MagickTrue" identifier = identifier) ;) })) })) (labeled_statement "LAB_00169587:\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar4;\n  }" statement_identifier : (if_statement "if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar4;\n  }" if (parenthesized_expression "(lVar2 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar2 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return MVar4;\n  }" { (return_statement "return MVar4;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 FUN_00169009(long param_1,long param_2,undefined8 param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  undefined8 uVar8;\n  ulong __n;\n  long lVar9;\n  void *__dest;\n  ulong uVar10;\n  ulong uVar11;\n  void *__src;\n  long in_FS_OFFSET;\n  long local_a0;\n  long local_98;\n  long local_90;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_50;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }\n  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);\n  lVar5 = *(long *)(param_1 + 0x28) * 4;\n  uVar11 = *(long *)(param_2 + 8) * lVar5;\n  local_a0 = *(long *)(param_2 + 0x10);\n  uVar10 = local_a0 * uVar11;\n  __src = *(void **)(param_2 + 0x38);\n  uVar1 = *(uint *)(param_1 + 0x430);\n  local_90 = local_a0;\n  if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }\n  uVar3 = 1;\n  if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }\nLAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "undefined4 FUN_00169009(long param_1,long param_2,undefined8 param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  undefined8 uVar8;\n  ulong __n;\n  long lVar9;\n  void *__dest;\n  ulong uVar10;\n  ulong uVar11;\n  void *__src;\n  long in_FS_OFFSET;\n  long local_a0;\n  long local_98;\n  long local_90;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_50;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }\n  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);\n  lVar5 = *(long *)(param_1 + 0x28) * 4;\n  uVar11 = *(long *)(param_2 + 8) * lVar5;\n  local_a0 = *(long *)(param_2 + 0x10);\n  uVar10 = local_a0 * uVar11;\n  __src = *(void **)(param_2 + 0x38);\n  uVar1 = *(uint *)(param_1 + 0x430);\n  local_90 = local_a0;\n  if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }\n  uVar3 = 1;\n  if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }\nLAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    \n  __stack_chk_fail();\n}" type_identifier (function_declarator "FUN_00169009(long param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  undefined8 uVar8;\n  ulong __n;\n  long lVar9;\n  void *__dest;\n  ulong uVar10;\n  ulong uVar11;\n  void *__src;\n  long in_FS_OFFSET;\n  long local_a0;\n  long local_98;\n  long local_90;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_50;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }\n  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);\n  lVar5 = *(long *)(param_1 + 0x28) * 4;\n  uVar11 = *(long *)(param_2 + 8) * lVar5;\n  local_a0 = *(long *)(param_2 + 0x10);\n  uVar10 = local_a0 * uVar11;\n  __src = *(void **)(param_2 + 0x38);\n  uVar1 = *(uint *)(param_1 + 0x430);\n  local_90 = local_a0;\n  if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }\n  uVar3 = 1;\n  if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }\nLAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_a0;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_90;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "undefined8 local_58;" type_identifier identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x40) != 0)" ( (binary_expression "*(int *)(param_2 + 0x40) != 0" (pointer_expression "*(int *)(param_2 + 0x40)" * (cast_expression "(int *)(param_2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    uVar3 = 1;\n    goto LAB_00169587;\n  }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) })) (expression_statement "lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18)" identifier = (binary_expression "*(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18)" (binary_expression "*(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) * (pointer_expression "*(long *)(param_2 + 0x20)" * (cast_expression "(long *)(param_2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) + (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))))) ;) (expression_statement "lVar5 = *(long *)(param_1 + 0x28) * 4;" (assignment_expression "lVar5 = *(long *)(param_1 + 0x28) * 4" identifier = (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * number_literal)) ;) (expression_statement "uVar11 = *(long *)(param_2 + 8) * lVar5;" (assignment_expression "uVar11 = *(long *)(param_2 + 8) * lVar5" identifier = (binary_expression "*(long *)(param_2 + 8) * lVar5" (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) * identifier)) ;) (expression_statement "local_a0 = *(long *)(param_2 + 0x10);" (assignment_expression "local_a0 = *(long *)(param_2 + 0x10)" identifier = (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = local_a0 * uVar11;" (assignment_expression "uVar10 = local_a0 * uVar11" identifier = (binary_expression "local_a0 * uVar11" identifier * identifier)) ;) (expression_statement "__src = *(void **)(param_2 + 0x38);" (assignment_expression "__src = *(void **)(param_2 + 0x38)" identifier = (pointer_expression "*(void **)(param_2 + 0x38)" * (cast_expression "(void **)(param_2 + 0x38)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x430);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x430)" identifier = (pointer_expression "*(uint *)(param_1 + 0x430)" * (cast_expression "(uint *)(param_1 + 0x430)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x430)" ( (binary_expression "param_1 + 0x430" identifier + number_literal) ))))) ;) (expression_statement "local_90 = local_a0;" (assignment_expression "local_90 = local_a0" identifier = identifier) ;) (if_statement "if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" if (parenthesized_expression "(uVar1 == 2)" ( (binary_expression "uVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }" { (expression_statement "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (expression_statement "local_68 = *(undefined8 *)(param_2 + 8);" (assignment_expression "local_68 = *(undefined8 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_60 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_60 = *(undefined8 *)(param_2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_58 = *(undefined8 *)(param_2 + 0x18);" (assignment_expression "local_58 = *(undefined8 *)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x18)" * (cast_expression "(undefined8 *)(param_2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_50 = *(long *)(param_2 + 0x20);" (assignment_expression "local_50 = *(long *)(param_2 + 0x20)" identifier = (pointer_expression "*(long *)(param_2 + 0x20)" * (cast_expression "(long *)(param_2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" if (parenthesized_expression "((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001))" ( (binary_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)" (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" ( (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) && (parenthesized_expression "(uVar10 < 0x14001)" ( (binary_expression "uVar10 < 0x14001" identifier < number_literal) ))) )) (compound_statement "{\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }" { (expression_statement "local_90 = 1;" (assignment_expression "local_90 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00169365:\n      local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (do_statement "do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);" do (compound_statement "{\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      }" { (expression_statement "uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);" (assignment_expression "uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" identifier = (call_expression "FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2538)" * (cast_expression "(undefined8 *)(param_1 + 0x2538)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2538)" ( (binary_expression "param_1 + 0x2538" identifier + number_literal) )))) , (pointer_expression "&local_68" & identifier) , identifier , identifier )))) ;) (if_statement "if (uVar10 != uVar11) break;" if (parenthesized_expression "(uVar10 != uVar11)" ( (binary_expression "uVar10 != uVar11" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" identifier = (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * number_literal) * (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))))) )))) ;) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "local_98 = local_98 + 1;" (assignment_expression "local_98 = local_98 + 1" identifier = (binary_expression "local_98 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_98 < local_90)" ( (binary_expression "local_98 < local_90" identifier < identifier) )) ;) }) (else_clause "else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" else (compound_statement "{\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" { (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" identifier = number_literal) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if (0 < local_a0) goto LAB_00169365;" if (parenthesized_expression "(0 < local_a0)" ( (binary_expression "0 < local_a0" number_literal < identifier) )) (goto_statement "goto LAB_00169365;" goto statement_identifier ;)) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) }))) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (labeled_statement "LAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" statement_identifier : (if_statement "if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" if (parenthesized_expression "(local_98 < local_90)" ( (binary_expression "local_98 < local_90" identifier < identifier) )) (compound_statement "{\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = GetExceptionMessage(*piVar7);" (assignment_expression "uVar8 = GetExceptionMessage(*piVar7)" identifier = (call_expression "GetExceptionMessage(*piVar7)" identifier (argument_list "(*piVar7)" ( (pointer_expression "*piVar7" * identifier) )))) ;) (expression_statement "ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);" (call_expression "ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8)" identifier (argument_list "(param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8)" ( identifier , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , number_literal , (string_literal ""UnableToWritePixelCache"" " string_content ") , (string_literal ""\'%s\': %s"" " escape_sequence string_content escape_sequence string_content ") , (binary_expression "param_1 + 0x14d4" identifier + number_literal) , identifier ))) ;) (expression_statement "DestroyString(uVar8);" (call_expression "DestroyString(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" else (compound_statement "{\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" { (if_statement "if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }" if (parenthesized_expression "(uVar1 < 3)" ( (binary_expression "uVar1 < 3" identifier < number_literal) )) (compound_statement "{\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }" { (if_statement "if (uVar1 != 1) goto LAB_001694d3;" if (parenthesized_expression "(uVar1 != 1)" ( (binary_expression "uVar1 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001694d3;" goto statement_identifier ;)) (expression_statement "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (expression_statement "iVar4 = FUN_001681c8(param_1,2);" (assignment_expression "iVar4 = FUN_001681c8(param_1,2)" identifier = (call_expression "FUN_001681c8(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;) (if_statement "if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = GetExceptionMessage(*piVar7);" (assignment_expression "uVar8 = GetExceptionMessage(*piVar7)" identifier = (call_expression "GetExceptionMessage(*piVar7)" identifier (argument_list "(*piVar7)" ( (pointer_expression "*piVar7" * identifier) )))) ;) (expression_statement "ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);" (call_expression "ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8)" identifier (argument_list "(param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8)" ( identifier , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , number_literal , (string_literal ""UnableToOpenFile"" " string_content ") , (string_literal ""\'%s\': %s"" " escape_sequence string_content escape_sequence string_content ") , (binary_expression "param_1 + 0x14d4" identifier + number_literal) , identifier ))) ;) (expression_statement "DestroyString(uVar8);" (call_expression "DestroyString(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00169587;" goto statement_identifier ;) })) (if_statement "if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" if (parenthesized_expression "((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001))" ( (binary_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)" (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" ( (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) && (parenthesized_expression "(uVar10 < 0x14001)" ( (binary_expression "uVar10 < 0x14001" identifier < number_literal) ))) )) (compound_statement "{\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }" { (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001690e8:\n        local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (do_statement "do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);" do (compound_statement "{\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        }" { (expression_statement "lVar5 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar5 = *(long *)(param_1 + 0x28)" identifier = (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar2 = *(long *)(param_1 + 0x440);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x440)" identifier = (pointer_expression "*(long *)(param_1 + 0x440)" * (cast_expression "(long *)(param_1 + 0x440)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x440)" ( (binary_expression "param_1 + 0x440" identifier + number_literal) ))))) ;) (if_statement "if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" if (parenthesized_expression "((long)uVar10 < 1)" ( (binary_expression "(long)uVar10 < 1" (cast_expression "(long)uVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n            uVar11 = 0;\n          }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" else (compound_statement "{\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);" do (compound_statement "{\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            }" { (expression_statement "__n = uVar10 - uVar11;" (assignment_expression "__n = uVar10 - uVar11" identifier = (binary_expression "uVar10 - uVar11" identifier - identifier)) ;) (if_statement "if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }" if (parenthesized_expression "(0x7ffffffffffffffe < uVar10 - uVar11)" ( (binary_expression "0x7ffffffffffffffe < uVar10 - uVar11" number_literal < (binary_expression "uVar10 - uVar11" identifier - identifier)) )) (compound_statement "{\n                __n = 0x7fffffffffffffff;\n              }" { (expression_statement "__n = 0x7fffffffffffffff;" (assignment_expression "__n = 0x7fffffffffffffff" identifier = number_literal) ;) })) (expression_statement "lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);" (assignment_expression "lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" identifier = (call_expression "pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" identifier (argument_list "(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" ( (pointer_expression "*(int *)(param_1 + 0x4d0)" * (cast_expression "(int *)(param_1 + 0x4d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4d0)" ( (binary_expression "param_1 + 0x4d0" identifier + number_literal) )))) , (cast_expression "(void *)((long)__src + uVar11)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + uVar11)" ( (binary_expression "(long)__src + uVar11" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , identifier , (binary_expression "lVar5 * 4 * lVar9 + lVar2 + uVar11" (binary_expression "lVar5 * 4 * lVar9 + lVar2" (binary_expression "lVar5 * 4 * lVar9" (binary_expression "lVar5 * 4" identifier * number_literal) * identifier) + identifier) + identifier) )))) ;) (if_statement "if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }" if (parenthesized_expression "(lVar6 < 1)" ( (binary_expression "lVar6 < 1" identifier < number_literal) )) (compound_statement "{\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*piVar7 != 4) break;" if (parenthesized_expression "(*piVar7 != 4)" ( (binary_expression "*piVar7 != 4" (pointer_expression "*piVar7" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) })) (expression_statement "uVar11 = uVar11 + lVar6;" (assignment_expression "uVar11 = uVar11 + lVar6" identifier = (binary_expression "uVar11 + lVar6" identifier + identifier)) ;) }) while (parenthesized_expression "((long)uVar11 < (long)uVar10)" ( (binary_expression "(long)uVar11 < (long)uVar10" (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < (cast_expression "(long)uVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) }))) (expression_statement "local_90 = local_70;" (assignment_expression "local_90 = local_70" identifier = identifier) ;) (if_statement "if (uVar10 != uVar11) break;" if (parenthesized_expression "(uVar10 != uVar11)" ( (binary_expression "uVar10 != uVar11" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" identifier = (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * number_literal) * (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))))) )))) ;) (expression_statement "lVar9 = lVar9 + *(long *)(param_1 + 0x10);" (assignment_expression "lVar9 = lVar9 + *(long *)(param_1 + 0x10)" identifier = (binary_expression "lVar9 + *(long *)(param_1 + 0x10)" identifier + (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))))) ;) (expression_statement "local_98 = local_98 + 1;" (assignment_expression "local_98 = local_98 + 1" identifier = (binary_expression "local_98 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_98 < local_70)" ( (binary_expression "local_98 < local_70" identifier < identifier) )) ;) }) (else_clause "else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" else (compound_statement "{\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" { (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (expression_statement "local_70 = local_a0;" (assignment_expression "local_70 = local_a0" identifier = identifier) ;) (if_statement "if (0 < local_a0) goto LAB_001690e8;" if (parenthesized_expression "(0 < local_a0)" ( (binary_expression "0 < local_a0" number_literal < identifier) )) (goto_statement "goto LAB_001690e8;" goto statement_identifier ;)) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar10 = GetMagickResource(3);" (assignment_expression "uVar10 = GetMagickResource(3)" identifier = (call_expression "GetMagickResource(3)" identifier (argument_list "(3)" ( number_literal )))) ;) (expression_statement "uVar11 = GetMagickResourceLimit(3);" (assignment_expression "uVar11 = GetMagickResourceLimit(3)" identifier = (call_expression "GetMagickResourceLimit(3)" identifier (argument_list "(3)" ( number_literal )))) ;) (if_statement "if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }" if (parenthesized_expression "(uVar11 < uVar10)" ( (binary_expression "uVar11 < uVar10" identifier < identifier) )) (compound_statement "{\n        FUN_00167e4e(param_1);\n      }" { (expression_statement "FUN_00167e4e(param_1);" (call_expression "FUN_00167e4e(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x2560))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" * (cast_expression "(undefined8 *)(param_1 + 0x2560)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2560)" ( (binary_expression "param_1 + 0x2560" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_001693eb;" goto statement_identifier ;) })) (if_statement "if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }" if (parenthesized_expression "(4 < uVar1)" ( (binary_expression "4 < uVar1" number_literal < identifier) )) (compound_statement "{\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }" { (labeled_statement "LAB_001694d3:\n      local_98 = 0;" statement_identifier : (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_001693eb;" goto statement_identifier ;) })) (if_statement "if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" ( (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }" { (expression_statement "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));" (assignment_expression "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" identifier = (cast_expression "(void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" ( (binary_expression "lVar9 * lVar5 + *(long *)(param_1 + 0x4c0)" (binary_expression "lVar9 * lVar5" identifier * identifier) + (pointer_expression "*(long *)(param_1 + 0x4c0)" * (cast_expression "(long *)(param_1 + 0x4c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c0)" ( (binary_expression "param_1 + 0x4c0" identifier + number_literal) ))))) )))) ;) (expression_statement "local_a0 = 1;" (assignment_expression "local_a0 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0016912c:\n      lVar5 = 0;" statement_identifier : (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;)) (do_statement "do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);" do (compound_statement "{\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "memcpy(__dest,__src,uVar10);" (call_expression "memcpy(__dest,__src,uVar10)" identifier (argument_list "(__dest,__src,uVar10)" ( identifier , identifier , identifier ))) ;) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" identifier = (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" ( (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * number_literal) * (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))))) )))) ;) (expression_statement "__dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);" (assignment_expression "__dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" identifier = (cast_expression "(void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" ( (binary_expression "(long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "*(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4" (binary_expression "*(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10)" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) * (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) * number_literal)) )))) ;) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar5 < local_a0)" ( (binary_expression "lVar5 < local_a0" identifier < identifier) )) ;) }) (else_clause "else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" else (compound_statement "{\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" { (expression_statement "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));" (assignment_expression "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" identifier = (cast_expression "(void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" ( (binary_expression "lVar9 * lVar5 + *(long *)(param_1 + 0x4c0)" (binary_expression "lVar9 * lVar5" identifier * identifier) + (pointer_expression "*(long *)(param_1 + 0x4c0)" * (cast_expression "(long *)(param_1 + 0x4c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c0)" ( (binary_expression "param_1 + 0x4c0" identifier + number_literal) ))))) )))) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if (0 < local_a0) goto LAB_0016912c;" if (parenthesized_expression "(0 < local_a0)" ( (binary_expression "0 < local_a0" number_literal < identifier) )) (goto_statement "goto LAB_0016912c;" goto statement_identifier ;)) }))) }))) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x2544) != 0)" ( (binary_expression "*(int *)(param_1 + 0x2544) != 0" (pointer_expression "*(int *)(param_1 + 0x2544)" * (cast_expression "(int *)(param_1 + 0x2544)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2544)" ( (binary_expression "param_1 + 0x2544" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }" { (expression_statement "uVar10 = *(ulong *)(param_1 + 0x18);" (assignment_expression "uVar10 = *(ulong *)(param_1 + 0x18)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(ulong *)(param_2 + 0x20);" (assignment_expression "uVar11 = *(ulong *)(param_2 + 0x20)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x20)" * (cast_expression "(ulong *)(param_2 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }" if (parenthesized_expression "(((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0))" ( (binary_expression "((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)" (parenthesized_expression "((uVar10 < 0x65) || (uVar11 == uVar10 - 1))" ( (binary_expression "(uVar10 < 0x65) || (uVar11 == uVar10 - 1)" (parenthesized_expression "(uVar10 < 0x65)" ( (binary_expression "uVar10 < 0x65" identifier < number_literal) )) || (parenthesized_expression "(uVar11 == uVar10 - 1)" ( (binary_expression "uVar11 == uVar10 - 1" identifier == (binary_expression "uVar10 - 1" identifier - number_literal)) ))) )) || (parenthesized_expression "(uVar11 % (uVar10 / 100) == 0)" ( (binary_expression "uVar11 % (uVar10 / 100) == 0" (binary_expression "uVar11 % (uVar10 / 100)" identifier % (parenthesized_expression "(uVar10 / 100)" ( (binary_expression "uVar10 / 100" identifier / number_literal) ))) == number_literal) ))) )) (compound_statement "{\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }" { (expression_statement "LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);" (call_expression "LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4)" identifier (argument_list "((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4)" ( (cast_expression "(double)*(ulong *)(param_2 + 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(ulong *)(param_2 + 8)" * (cast_expression "(ulong *)(param_2 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) , (cast_expression "(double)*(ulong *)(param_2 + 0x10)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(ulong *)(param_2 + 0x10)" * (cast_expression "(ulong *)(param_2 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) , (cast_expression "(double)*(long *)(param_2 + 0x18)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) , (cast_expression "(double)(long)uVar11" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) , number_literal , (string_literal ""MagickCore/cache.c"" " string_content ") , (string_literal ""WritePixelCachePixels"" " string_content ") , number_literal , (string_literal ""%s[%.20gx%.20g%+.20g%+.20g]"" " string_content ") , (binary_expression "param_1 + 0x4d4" identifier + number_literal) ))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })) })) (labeled_statement "LAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }) (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 < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT , (string_literal " string_content ") , (string_literal " escape_sequence string_content escape_sequence string_content ") , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT , (string_literal " string_content ") , (string_literal " escape_sequence string_content escape_sequence string_content ") , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) , IDENT , (binary_expression (binary_expression (binary_expression (binary_expression IDENT * LIT) * IDENT) + IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (do_statement do (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 (sized_type_specifier long)) ) IDENT) + (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (sized_type_specifier long)) ) IDENT) + (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }))) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT - LIT)) ))) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT % (parenthesized_expression ( (binary_expression IDENT / LIT) ))) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) , LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 FUN_00169009(long param_1,long param_2,undefined8 param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  undefined8 uVar8;\n  ulong __n;\n  long lVar9;\n  void *__dest;\n  ulong uVar10;\n  ulong uVar11;\n  void *__src;\n  long in_FS_OFFSET;\n  long local_a0;\n  long local_98;\n  long local_90;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_50;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }\n  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);\n  lVar5 = *(long *)(param_1 + 0x28) * 4;\n  uVar11 = *(long *)(param_2 + 8) * lVar5;\n  local_a0 = *(long *)(param_2 + 0x10);\n  uVar10 = local_a0 * uVar11;\n  __src = *(void **)(param_2 + 0x38);\n  uVar1 = *(uint *)(param_1 + 0x430);\n  local_90 = local_a0;\n  if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }\n  uVar3 = 1;\n  if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }\nLAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    \n  __stack_chk_fail();\n}" (type_identifier "undefined4") (function_declarator "FUN_00169009(long param_1,long param_2,undefined8 param_3)" (identifier "FUN_00169009") (parameter_list "(long param_1,long param_2,undefined8 param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  int *piVar7;\n  undefined8 uVar8;\n  ulong __n;\n  long lVar9;\n  void *__dest;\n  ulong uVar10;\n  ulong uVar11;\n  void *__src;\n  long in_FS_OFFSET;\n  long local_a0;\n  long local_98;\n  long local_90;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_50;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }\n  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);\n  lVar5 = *(long *)(param_1 + 0x28) * 4;\n  uVar11 = *(long *)(param_2 + 8) * lVar5;\n  local_a0 = *(long *)(param_2 + 0x10);\n  uVar10 = local_a0 * uVar11;\n  __src = *(void **)(param_2 + 0x38);\n  uVar1 = *(uint *)(param_1 + 0x430);\n  local_90 = local_a0;\n  if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }\n  uVar3 = 1;\n  if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }\nLAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "ulong __n;" (type_identifier "ulong") (identifier "__n") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "void *__src;" (primitive_type "void") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "long local_a0;" (sized_type_specifier "long" (long "long")) (identifier "local_a0") (; ";")) (declaration "long local_98;" (sized_type_specifier "long" (long "long")) (identifier "local_98") (; ";")) (declaration "long local_90;" (sized_type_specifier "long" (long "long")) (identifier "local_90") (; ";")) (declaration "long local_70;" (sized_type_specifier "long" (long "long")) (identifier "local_70") (; ";")) (declaration "undefined8 local_68;" (type_identifier "undefined8") (identifier "local_68") (; ";")) (declaration "undefined8 local_60;" (type_identifier "undefined8") (identifier "local_60") (; ";")) (declaration "undefined8 local_58;" (type_identifier "undefined8") (identifier "local_58") (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_2 + 0x40) != 0) {\n    uVar3 = 1;\n    goto LAB_00169587;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x40) != 0" (pointer_expression "*(int *)(param_2 + 0x40)" (* "*") (cast_expression "(int *)(param_2 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = 1;\n    goto LAB_00169587;\n  }" ({ "{") (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00169587;" (goto "goto") (statement_identifier "LAB_00169587") (; ";")) (} "}"))) (expression_statement "lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18)" (identifier "lVar9") (= "=") (binary_expression "*(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18)" (binary_expression "*(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20)" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (* "*") (pointer_expression "*(long *)(param_2 + 0x20)" (* "*") (cast_expression "(long *)(param_2 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (+ "+") (pointer_expression "*(long *)(param_2 + 0x18)" (* "*") (cast_expression "(long *)(param_2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (expression_statement "lVar5 = *(long *)(param_1 + 0x28) * 4;" (assignment_expression "lVar5 = *(long *)(param_1 + 0x28) * 4" (identifier "lVar5") (= "=") (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar11 = *(long *)(param_2 + 8) * lVar5;" (assignment_expression "uVar11 = *(long *)(param_2 + 8) * lVar5" (identifier "uVar11") (= "=") (binary_expression "*(long *)(param_2 + 8) * lVar5" (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (* "*") (identifier "lVar5"))) (; ";")) (expression_statement "local_a0 = *(long *)(param_2 + 0x10);" (assignment_expression "local_a0 = *(long *)(param_2 + 0x10)" (identifier "local_a0") (= "=") (pointer_expression "*(long *)(param_2 + 0x10)" (* "*") (cast_expression "(long *)(param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar10 = local_a0 * uVar11;" (assignment_expression "uVar10 = local_a0 * uVar11" (identifier "uVar10") (= "=") (binary_expression "local_a0 * uVar11" (identifier "local_a0") (* "*") (identifier "uVar11"))) (; ";")) (expression_statement "__src = *(void **)(param_2 + 0x38);" (assignment_expression "__src = *(void **)(param_2 + 0x38)" (identifier "__src") (= "=") (pointer_expression "*(void **)(param_2 + 0x38)" (* "*") (cast_expression "(void **)(param_2 + 0x38)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(uint *)(param_1 + 0x430);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x430)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_1 + 0x430)" (* "*") (cast_expression "(uint *)(param_1 + 0x430)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x430)" (( "(") (binary_expression "param_1 + 0x430" (identifier "param_1") (+ "+") (number_literal "0x430")) () ")"))))) (; ";")) (expression_statement "local_90 = local_a0;" (assignment_expression "local_90 = local_a0" (identifier "local_90") (= "=") (identifier "local_a0")) (; ";")) (if_statement "if (uVar1 == 2) {\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }\n  else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" (if "if") (parenthesized_expression "(uVar1 == 2)" (( "(") (binary_expression "uVar1 == 2" (identifier "uVar1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n    local_68 = *(undefined8 *)(param_2 + 8);\n    local_60 = *(undefined8 *)(param_2 + 0x10);\n    local_58 = *(undefined8 *)(param_2 + 0x18);\n    local_50 = *(long *)(param_2 + 0x20);\n    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }\n    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\nLAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }\n  }" ({ "{") (expression_statement "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" (identifier "LockSemaphoreInfo") (argument_list "(*(undefined8 *)(param_1 + 0x2560))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x2560)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2560)" (( "(") (binary_expression "param_1 + 0x2560" (identifier "param_1") (+ "+") (number_literal "0x2560")) () ")")))) () ")"))) (; ";")) (expression_statement "local_68 = *(undefined8 *)(param_2 + 8);" (assignment_expression "local_68 = *(undefined8 *)(param_2 + 8)" (identifier "local_68") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 8)" (* "*") (cast_expression "(undefined8 *)(param_2 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "local_60 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_60 = *(undefined8 *)(param_2 + 0x10)" (identifier "local_60") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "local_58 = *(undefined8 *)(param_2 + 0x18);" (assignment_expression "local_58 = *(undefined8 *)(param_2 + 0x18)" (identifier "local_58") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "local_50 = *(long *)(param_2 + 0x20);" (assignment_expression "local_50 = *(long *)(param_2 + 0x20)" (identifier "local_50") (= "=") (pointer_expression "*(long *)(param_2 + 0x20)" (* "*") (cast_expression "(long *)(param_2 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }\n    else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" (if "if") (parenthesized_expression "((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001))" (( "(") (binary_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)" (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" (( "(") (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(uVar10 < 0x14001)" (( "(") (binary_expression "uVar10 < 0x14001" (identifier "uVar10") (< "<") (number_literal "0x14001")) () ")"))) () ")")) (compound_statement "{\n      local_90 = 1;\nLAB_00169365:\n      local_98 = 0;\n      do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);\n    }" ({ "{") (expression_statement "local_90 = 1;" (assignment_expression "local_90 = 1" (identifier "local_90") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00169365:\n      local_98 = 0;" (statement_identifier "LAB_00169365") (: ":") (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      } while (local_98 < local_90);" (do "do") (compound_statement "{\n        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);\n        if (uVar10 != uVar11) break;\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        local_50 = local_50 + 1;\n        local_98 = local_98 + 1;\n      }" ({ "{") (expression_statement "uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);" (assignment_expression "uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" (identifier "uVar11") (= "=") (call_expression "FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" (identifier "FUN_001c4c55") (argument_list "(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x2538)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x2538)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2538)" (( "(") (binary_expression "param_1 + 0x2538" (identifier "param_1") (+ "+") (number_literal "0x2538")) () ")")))) (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) (, ",") (identifier "uVar10") (, ",") (identifier "__src") () ")")))) (; ";")) (if_statement "if (uVar10 != uVar11) break;" (if "if") (parenthesized_expression "(uVar10 != uVar11)" (( "(") (binary_expression "uVar10 != uVar11" (identifier "uVar10") (!= "!=") (identifier "uVar11")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (identifier "__src") (= "=") (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (( "(") (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src")) (+ "+") (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4")) (* "*") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))))) () ")")))) (; ";")) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" (identifier "local_50") (= "=") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_98 = local_98 + 1;" (assignment_expression "local_98 = local_98 + 1" (identifier "local_98") (= "=") (binary_expression "local_98 + 1" (identifier "local_98") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_98 < local_90)" (( "(") (binary_expression "local_98 < local_90" (identifier "local_98") (< "<") (identifier "local_90")) () ")")) (; ";")) (} "}")) (else_clause "else {\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" (else "else") (compound_statement "{\n      local_60 = 1;\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_00169365;\n      local_98 = 0;\n    }" ({ "{") (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" (identifier "local_60") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" (identifier "uVar10") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (0 < local_a0) goto LAB_00169365;" (if "if") (parenthesized_expression "(0 < local_a0)" (( "(") (binary_expression "0 < local_a0" (number_literal "0") (< "<") (identifier "local_a0")) () ")")) (goto_statement "goto LAB_00169365;" (goto "goto") (statement_identifier "LAB_00169365") (; ";"))) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" (identifier "UnlockSemaphoreInfo") (argument_list "(*(undefined8 *)(param_1 + 0x2560))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x2560)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2560)" (( "(") (binary_expression "param_1 + 0x2560" (identifier "param_1") (+ "+") (number_literal "0x2560")) () ")")))) () ")"))) (; ";")) (labeled_statement "LAB_001693eb:\n    if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" (statement_identifier "LAB_001693eb") (: ":") (if_statement "if (local_98 < local_90) {\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" (if "if") (parenthesized_expression "(local_98 < local_90)" (( "(") (binary_expression "local_98 < local_90" (identifier "local_98") (< "<") (identifier "local_90")) () ")")) (compound_statement "{\n      piVar7 = __errno_location();\n      uVar8 = GetExceptionMessage(*piVar7);\n      ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);\n      DestroyString(uVar8);\n      uVar3 = 0;\n      goto LAB_00169587;\n    }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar8 = GetExceptionMessage(*piVar7);" (assignment_expression "uVar8 = GetExceptionMessage(*piVar7)" (identifier "uVar8") (= "=") (call_expression "GetExceptionMessage(*piVar7)" (identifier "GetExceptionMessage") (argument_list "(*piVar7)" (( "(") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) () ")")))) (; ";")) (expression_statement "ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);" (call_expression "ThrowMagickException\n                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8)" (identifier "ThrowMagickException") (argument_list "(param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,\n                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8)" (( "(") (identifier "param_3") (, ",") (string_literal ""MagickCore/cache.c"" (" """) (string_content "MagickCore/cache.c") (" """)) (, ",") (string_literal ""WritePixelCachePixels"" (" """) (string_content "WritePixelCachePixels") (" """)) (, ",") (number_literal "0x16ce") (, ",") (number_literal "0x1bd") (, ",") (string_literal ""UnableToWritePixelCache"" (" """) (string_content "UnableToWritePixelCache") (" """)) (, ",") (string_literal ""\'%s\': %s"" (" """) (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content ": %s") (" """)) (, ",") (binary_expression "param_1 + 0x14d4" (identifier "param_1") (+ "+") (number_literal "0x14d4")) (, ",") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "DestroyString(uVar8);" (call_expression "DestroyString(uVar8)" (identifier "DestroyString") (argument_list "(uVar8)" (( "(") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00169587;" (goto "goto") (statement_identifier "LAB_00169587") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" (else "else") (compound_statement "{\n    if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }\n    if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }\n    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }\n  }" ({ "{") (if_statement "if (uVar1 < 3) {\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }" (if "if") (parenthesized_expression "(uVar1 < 3)" (( "(") (binary_expression "uVar1 < 3" (identifier "uVar1") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n      if (uVar1 != 1) goto LAB_001694d3;\n      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      iVar4 = FUN_001681c8(param_1,2);\n      if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }\n      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }\n      uVar10 = GetMagickResource(3);\n      uVar11 = GetMagickResourceLimit(3);\n      if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }\n      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n      goto LAB_001693eb;\n    }" ({ "{") (if_statement "if (uVar1 != 1) goto LAB_001694d3;" (if "if") (parenthesized_expression "(uVar1 != 1)" (( "(") (binary_expression "uVar1 != 1" (identifier "uVar1") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_001694d3;" (goto "goto") (statement_identifier "LAB_001694d3") (; ";"))) (expression_statement "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" (identifier "LockSemaphoreInfo") (argument_list "(*(undefined8 *)(param_1 + 0x2560))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x2560)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2560)" (( "(") (binary_expression "param_1 + 0x2560" (identifier "param_1") (+ "+") (number_literal "0x2560")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar4 = FUN_001681c8(param_1,2);" (assignment_expression "iVar4 = FUN_001681c8(param_1,2)" (identifier "iVar4") (= "=") (call_expression "FUN_001681c8(param_1,2)" (identifier "FUN_001681c8") (argument_list "(param_1,2)" (( "(") (identifier "param_1") (, ",") (number_literal "2") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        piVar7 = __errno_location();\n        uVar8 = GetExceptionMessage(*piVar7);\n        ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);\n        DestroyString(uVar8);\n        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));\n        uVar3 = 0;\n        goto LAB_00169587;\n      }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar8 = GetExceptionMessage(*piVar7);" (assignment_expression "uVar8 = GetExceptionMessage(*piVar7)" (identifier "uVar8") (= "=") (call_expression "GetExceptionMessage(*piVar7)" (identifier "GetExceptionMessage") (argument_list "(*piVar7)" (( "(") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) () ")")))) (; ";")) (expression_statement "ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);" (call_expression "ThrowMagickException\n                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8)" (identifier "ThrowMagickException") (argument_list "(param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,\n                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8)" (( "(") (identifier "param_3") (, ",") (string_literal ""MagickCore/cache.c"" (" """) (string_content "MagickCore/cache.c") (" """)) (, ",") (string_literal ""WritePixelCachePixels"" (" """) (string_content "WritePixelCachePixels") (" """)) (, ",") (number_literal "0x1691") (, ",") (number_literal "0x1ae") (, ",") (string_literal ""UnableToOpenFile"" (" """) (string_content "UnableToOpenFile") (" """)) (, ",") (string_literal ""\'%s\': %s"" (" """) (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content ": %s") (" """)) (, ",") (binary_expression "param_1 + 0x14d4" (identifier "param_1") (+ "+") (number_literal "0x14d4")) (, ",") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "DestroyString(uVar8);" (call_expression "DestroyString(uVar8)" (identifier "DestroyString") (argument_list "(uVar8)" (( "(") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" (identifier "UnlockSemaphoreInfo") (argument_list "(*(undefined8 *)(param_1 + 0x2560))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x2560)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2560)" (( "(") (binary_expression "param_1 + 0x2560" (identifier "param_1") (+ "+") (number_literal "0x2560")) () ")")))) () ")"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00169587;" (goto "goto") (statement_identifier "LAB_00169587") (; ";")) (} "}"))) (if_statement "if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }\n      else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" (if "if") (parenthesized_expression "((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001))" (( "(") (binary_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)" (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" (( "(") (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(uVar10 < 0x14001)" (( "(") (binary_expression "uVar10 < 0x14001" (identifier "uVar10") (< "<") (number_literal "0x14001")) () ")"))) () ")")) (compound_statement "{\n        local_70 = 1;\nLAB_001690e8:\n        local_98 = 0;\n        do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);\n      }" ({ "{") (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" (identifier "local_70") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_001690e8:\n        local_98 = 0;" (statement_identifier "LAB_001690e8") (: ":") (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        } while (local_98 < local_70);" (do "do") (compound_statement "{\n          lVar5 = *(long *)(param_1 + 0x28);\n          lVar2 = *(long *)(param_1 + 0x440);\n          if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }\n          local_90 = local_70;\n          if (uVar10 != uVar11) break;\n          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n          lVar9 = lVar9 + *(long *)(param_1 + 0x10);\n          local_98 = local_98 + 1;\n        }" ({ "{") (expression_statement "lVar5 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar5 = *(long *)(param_1 + 0x28)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "lVar2 = *(long *)(param_1 + 0x440);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x440)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_1 + 0x440)" (* "*") (cast_expression "(long *)(param_1 + 0x440)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x440)" (( "(") (binary_expression "param_1 + 0x440" (identifier "param_1") (+ "+") (number_literal "0x440")) () ")"))))) (; ";")) (if_statement "if ((long)uVar10 < 1) {\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" (if "if") (parenthesized_expression "((long)uVar10 < 1)" (( "(") (binary_expression "(long)uVar10 < 1" (cast_expression "(long)uVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar10")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            uVar11 = 0;\n          }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" (else "else") (compound_statement "{\n            uVar11 = 0;\n            do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);\n          }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            } while ((long)uVar11 < (long)uVar10);" (do "do") (compound_statement "{\n              __n = uVar10 - uVar11;\n              if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }\n              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);\n              if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }\n              uVar11 = uVar11 + lVar6;\n            }" ({ "{") (expression_statement "__n = uVar10 - uVar11;" (assignment_expression "__n = uVar10 - uVar11" (identifier "__n") (= "=") (binary_expression "uVar10 - uVar11" (identifier "uVar10") (- "-") (identifier "uVar11"))) (; ";")) (if_statement "if (0x7ffffffffffffffe < uVar10 - uVar11) {\n                __n = 0x7fffffffffffffff;\n              }" (if "if") (parenthesized_expression "(0x7ffffffffffffffe < uVar10 - uVar11)" (( "(") (binary_expression "0x7ffffffffffffffe < uVar10 - uVar11" (number_literal "0x7ffffffffffffffe") (< "<") (binary_expression "uVar10 - uVar11" (identifier "uVar10") (- "-") (identifier "uVar11"))) () ")")) (compound_statement "{\n                __n = 0x7fffffffffffffff;\n              }" ({ "{") (expression_statement "__n = 0x7fffffffffffffff;" (assignment_expression "__n = 0x7fffffffffffffff" (identifier "__n") (= "=") (number_literal "0x7fffffffffffffff")) (; ";")) (} "}"))) (expression_statement "lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11);" (assignment_expression "lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" (identifier "lVar6") (= "=") (call_expression "pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" (identifier "pwrite") (argument_list "(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,\n                             lVar5 * 4 * lVar9 + lVar2 + uVar11)" (( "(") (pointer_expression "*(int *)(param_1 + 0x4d0)" (* "*") (cast_expression "(int *)(param_1 + 0x4d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4d0)" (( "(") (binary_expression "param_1 + 0x4d0" (identifier "param_1") (+ "+") (number_literal "0x4d0")) () ")")))) (, ",") (cast_expression "(void *)((long)__src + uVar11)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__src + uVar11)" (( "(") (binary_expression "(long)__src + uVar11" (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src")) (+ "+") (identifier "uVar11")) () ")"))) (, ",") (identifier "__n") (, ",") (binary_expression "lVar5 * 4 * lVar9 + lVar2 + uVar11" (binary_expression "lVar5 * 4 * lVar9 + lVar2" (binary_expression "lVar5 * 4 * lVar9" (binary_expression "lVar5 * 4" (identifier "lVar5") (* "*") (number_literal "4")) (* "*") (identifier "lVar9")) (+ "+") (identifier "lVar2")) (+ "+") (identifier "uVar11")) () ")")))) (; ";")) (if_statement "if (lVar6 < 1) {\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }" (if "if") (parenthesized_expression "(lVar6 < 1)" (( "(") (binary_expression "lVar6 < 1" (identifier "lVar6") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                piVar7 = __errno_location();\n                if (*piVar7 != 4) break;\n                lVar6 = 0;\n              }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*piVar7 != 4) break;" (if "if") (parenthesized_expression "(*piVar7 != 4)" (( "(") (binary_expression "*piVar7 != 4" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (!= "!=") (number_literal "4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar11 = uVar11 + lVar6;" (assignment_expression "uVar11 = uVar11 + lVar6" (identifier "uVar11") (= "=") (binary_expression "uVar11 + lVar6" (identifier "uVar11") (+ "+") (identifier "lVar6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((long)uVar11 < (long)uVar10)" (( "(") (binary_expression "(long)uVar11 < (long)uVar10" (cast_expression "(long)uVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar11")) (< "<") (cast_expression "(long)uVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar10"))) () ")")) (; ";")) (} "}")))) (expression_statement "local_90 = local_70;" (assignment_expression "local_90 = local_70" (identifier "local_90") (= "=") (identifier "local_70")) (; ";")) (if_statement "if (uVar10 != uVar11) break;" (if "if") (parenthesized_expression "(uVar10 != uVar11)" (( "(") (binary_expression "uVar10 != uVar11" (identifier "uVar10") (!= "!=") (identifier "uVar11")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (identifier "__src") (= "=") (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (( "(") (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src")) (+ "+") (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4")) (* "*") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))))) () ")")))) (; ";")) (expression_statement "lVar9 = lVar9 + *(long *)(param_1 + 0x10);" (assignment_expression "lVar9 = lVar9 + *(long *)(param_1 + 0x10)" (identifier "lVar9") (= "=") (binary_expression "lVar9 + *(long *)(param_1 + 0x10)" (identifier "lVar9") (+ "+") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (expression_statement "local_98 = local_98 + 1;" (assignment_expression "local_98 = local_98 + 1" (identifier "local_98") (= "=") (binary_expression "local_98 + 1" (identifier "local_98") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_98 < local_70)" (( "(") (binary_expression "local_98 < local_70" (identifier "local_98") (< "<") (identifier "local_70")) () ")")) (; ";")) (} "}")) (else_clause "else {\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" (else "else") (compound_statement "{\n        uVar10 = uVar11;\n        local_70 = local_a0;\n        if (0 < local_a0) goto LAB_001690e8;\n        local_98 = 0;\n      }" ({ "{") (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" (identifier "uVar10") (= "=") (identifier "uVar11")) (; ";")) (expression_statement "local_70 = local_a0;" (assignment_expression "local_70 = local_a0" (identifier "local_70") (= "=") (identifier "local_a0")) (; ";")) (if_statement "if (0 < local_a0) goto LAB_001690e8;" (if "if") (parenthesized_expression "(0 < local_a0)" (( "(") (binary_expression "0 < local_a0" (number_literal "0") (< "<") (identifier "local_a0")) () ")")) (goto_statement "goto LAB_001690e8;" (goto "goto") (statement_identifier "LAB_001690e8") (; ";"))) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "uVar10 = GetMagickResource(3);" (assignment_expression "uVar10 = GetMagickResource(3)" (identifier "uVar10") (= "=") (call_expression "GetMagickResource(3)" (identifier "GetMagickResource") (argument_list "(3)" (( "(") (number_literal "3") () ")")))) (; ";")) (expression_statement "uVar11 = GetMagickResourceLimit(3);" (assignment_expression "uVar11 = GetMagickResourceLimit(3)" (identifier "uVar11") (= "=") (call_expression "GetMagickResourceLimit(3)" (identifier "GetMagickResourceLimit") (argument_list "(3)" (( "(") (number_literal "3") () ")")))) (; ";")) (if_statement "if (uVar11 < uVar10) {\n        FUN_00167e4e(param_1);\n      }" (if "if") (parenthesized_expression "(uVar11 < uVar10)" (( "(") (binary_expression "uVar11 < uVar10" (identifier "uVar11") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n        FUN_00167e4e(param_1);\n      }" ({ "{") (expression_statement "FUN_00167e4e(param_1);" (call_expression "FUN_00167e4e(param_1)" (identifier "FUN_00167e4e") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));" (call_expression "UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560))" (identifier "UnlockSemaphoreInfo") (argument_list "(*(undefined8 *)(param_1 + 0x2560))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x2560)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x2560)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2560)" (( "(") (binary_expression "param_1 + 0x2560" (identifier "param_1") (+ "+") (number_literal "0x2560")) () ")")))) () ")"))) (; ";")) (goto_statement "goto LAB_001693eb;" (goto "goto") (statement_identifier "LAB_001693eb") (; ";")) (} "}"))) (if_statement "if (4 < uVar1) {\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }" (if "if") (parenthesized_expression "(4 < uVar1)" (( "(") (binary_expression "4 < uVar1" (number_literal "4") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\nLAB_001694d3:\n      local_98 = 0;\n      goto LAB_001693eb;\n    }" ({ "{") (labeled_statement "LAB_001694d3:\n      local_98 = 0;" (statement_identifier "LAB_001694d3") (: ":") (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_001693eb;" (goto "goto") (statement_identifier "LAB_001693eb") (; ";")) (} "}"))) (if_statement "if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }\n    else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8))" (( "(") (binary_expression "*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      local_a0 = 1;\nLAB_0016912c:\n      lVar5 = 0;\n      do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);\n    }" ({ "{") (expression_statement "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));" (assignment_expression "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" (identifier "__dest") (= "=") (cast_expression "(void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" (( "(") (binary_expression "lVar9 * lVar5 + *(long *)(param_1 + 0x4c0)" (binary_expression "lVar9 * lVar5" (identifier "lVar9") (* "*") (identifier "lVar5")) (+ "+") (pointer_expression "*(long *)(param_1 + 0x4c0)" (* "*") (cast_expression "(long *)(param_1 + 0x4c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c0)" (( "(") (binary_expression "param_1 + 0x4c0" (identifier "param_1") (+ "+") (number_literal "0x4c0")) () ")"))))) () ")")))) (; ";")) (expression_statement "local_a0 = 1;" (assignment_expression "local_a0 = 1" (identifier "local_a0") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0016912c:\n      lVar5 = 0;" (statement_identifier "LAB_0016912c") (: ":") (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" (identifier "lVar5") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      } while (lVar5 < local_a0);" (do "do") (compound_statement "{\n        memcpy(__dest,__src,uVar10);\n        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));\n        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);\n        lVar5 = lVar5 + 1;\n      }" ({ "{") (expression_statement "memcpy(__dest,__src,uVar10);" (call_expression "memcpy(__dest,__src,uVar10)" (identifier "memcpy") (argument_list "(__dest,__src,uVar10)" (( "(") (identifier "__dest") (, ",") (identifier "__src") (, ",") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));" (assignment_expression "__src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (identifier "__src") (= "=") (cast_expression "(void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8))" (( "(") (binary_expression "(long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src")) (+ "+") (binary_expression "*(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8)" (binary_expression "*(long *)(param_1 + 0x28) * 4" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4")) (* "*") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))))) () ")")))) (; ";")) (expression_statement "__dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);" (assignment_expression "__dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" (identifier "__dest") (= "=") (cast_expression "(void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4)" (( "(") (binary_expression "(long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (binary_expression "*(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4" (binary_expression "*(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10)" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar5 < local_a0)" (( "(") (binary_expression "lVar5 < local_a0" (identifier "lVar5") (< "<") (identifier "local_a0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" (else "else") (compound_statement "{\n      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));\n      uVar10 = uVar11;\n      if (0 < local_a0) goto LAB_0016912c;\n    }" ({ "{") (expression_statement "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));" (assignment_expression "__dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" (identifier "__dest") (= "=") (cast_expression "(void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0))" (( "(") (binary_expression "lVar9 * lVar5 + *(long *)(param_1 + 0x4c0)" (binary_expression "lVar9 * lVar5" (identifier "lVar9") (* "*") (identifier "lVar5")) (+ "+") (pointer_expression "*(long *)(param_1 + 0x4c0)" (* "*") (cast_expression "(long *)(param_1 + 0x4c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c0)" (( "(") (binary_expression "param_1 + 0x4c0" (identifier "param_1") (+ "+") (number_literal "0x4c0")) () ")"))))) () ")")))) (; ";")) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" (identifier "uVar10") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (0 < local_a0) goto LAB_0016912c;" (if "if") (parenthesized_expression "(0 < local_a0)" (( "(") (binary_expression "0 < local_a0" (number_literal "0") (< "<") (identifier "local_a0")) () ")")) (goto_statement "goto LAB_0016912c;" (goto "goto") (statement_identifier "LAB_0016912c") (; ";"))) (} "}")))) (} "}")))) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x2544) != 0) {\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x2544) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x2544) != 0" (pointer_expression "*(int *)(param_1 + 0x2544)" (* "*") (cast_expression "(int *)(param_1 + 0x2544)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2544)" (( "(") (binary_expression "param_1 + 0x2544" (identifier "param_1") (+ "+") (number_literal "0x2544")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar10 = *(ulong *)(param_1 + 0x18);\n    uVar11 = *(ulong *)(param_2 + 0x20);\n    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }\n  }" ({ "{") (expression_statement "uVar10 = *(ulong *)(param_1 + 0x18);" (assignment_expression "uVar10 = *(ulong *)(param_1 + 0x18)" (identifier "uVar10") (= "=") (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar11 = *(ulong *)(param_2 + 0x20);" (assignment_expression "uVar11 = *(ulong *)(param_2 + 0x20)" (identifier "uVar11") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x20)" (* "*") (cast_expression "(ulong *)(param_2 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }" (if "if") (parenthesized_expression "(((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0))" (( "(") (binary_expression "((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)" (parenthesized_expression "((uVar10 < 0x65) || (uVar11 == uVar10 - 1))" (( "(") (binary_expression "(uVar10 < 0x65) || (uVar11 == uVar10 - 1)" (parenthesized_expression "(uVar10 < 0x65)" (( "(") (binary_expression "uVar10 < 0x65" (identifier "uVar10") (< "<") (number_literal "0x65")) () ")")) (|| "||") (parenthesized_expression "(uVar11 == uVar10 - 1)" (( "(") (binary_expression "uVar11 == uVar10 - 1" (identifier "uVar11") (== "==") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(uVar11 % (uVar10 / 100) == 0)" (( "(") (binary_expression "uVar11 % (uVar10 / 100) == 0" (binary_expression "uVar11 % (uVar10 / 100)" (identifier "uVar11") (% "%") (parenthesized_expression "(uVar10 / 100)" (( "(") (binary_expression "uVar10 / 100" (identifier "uVar10") (/ "/") (number_literal "100")) () ")"))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);\n      uVar3 = 1;\n    }" ({ "{") (expression_statement "LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);" (call_expression "LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4)" (identifier "LogMagickEvent") (argument_list "((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),\n                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",\n                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4)" (( "(") (cast_expression "(double)*(ulong *)(param_2 + 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(ulong *)(param_2 + 8)" (* "*") (cast_expression "(ulong *)(param_2 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (, ",") (cast_expression "(double)*(ulong *)(param_2 + 0x10)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(ulong *)(param_2 + 0x10)" (* "*") (cast_expression "(ulong *)(param_2 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (, ",") (cast_expression "(double)*(long *)(param_2 + 0x18)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(long *)(param_2 + 0x18)" (* "*") (cast_expression "(long *)(param_2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (, ",") (cast_expression "(double)(long)uVar11" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(long)uVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar11"))) (, ",") (number_literal "8") (, ",") (string_literal ""MagickCore/cache.c"" (" """) (string_content "MagickCore/cache.c") (" """)) (, ",") (string_literal ""WritePixelCachePixels"" (" """) (string_content "WritePixelCachePixels") (" """)) (, ",") (number_literal "0x16d3") (, ",") (string_literal ""%s[%.20gx%.20g%+.20g%+.20g]"" (" """) (string_content "%s[%.20gx%.20g%+.20g%+.20g]") (" """)) (, ",") (binary_expression "param_1 + 0x4d4" (identifier "param_1") (+ "+") (number_literal "0x4d4")) () ")"))) (; ";")) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00169587:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }" (statement_identifier "LAB_00169587") (: ":") (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return uVar3;\n  }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

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

type_1
function_1(type_2 *cache_info,type_3 *nexus_info,type_4 *exception)

{
  type_5 var_7;
  long var_34;
  size_t var_3;
  type_1 var_22;
  long var_4;
  long var_25;
  int *piVar7;
  type_6 var_12;
  type_6 var_28;
  char *pcVar10;
  type_7 __n;
  long var_24;
  type_8 *var_32;
  type_7 var_10;
  type_7 var_6;
  type_8 *pixels;
  long var_1;
  size_t var_5;
  long var_13;
  size_t local_90;
  size_t local_70;
  type_9 region;
  
  var_34 = *(long *)(var_1 + 0x28);
  if (nexus_info->authentic_pixel_cache != var_2) {
    var_22 = MagickTrue;
    goto LAB_00169587;
  }
  var_24 = cache_info->columns * (nexus_info->region).y + (nexus_info->region).x;
  var_3 = (nexus_info->region).width;
  var_4 = cache_info->number_channels * 4;
  var_6 = var_3 * var_4;
  var_5 = (nexus_info->region).height;
  var_10 = var_5 * var_6;
  pixels = nexus_info->pixels;
  var_7 = cache_info->type;
  local_90 = var_5;
  if (var_7 == var_8) {
    var_9(cache_info->file_semaphore);
    region.width = (nexus_info->region).width;
    region.height = (nexus_info->region).height;
    region.x = (nexus_info->region).x;
    region.y = (nexus_info->region).y;
    if ((cache_info->columns == (nexus_info->region).width) && (var_10 < 0x14001)) {
      local_90 = 1;
LAB_00169365:
      var_13 = 0;
      do {
        var_12 = var_11
                          ((type_10 *)cache_info->server_info,&region,var_10,
                           (type_11 *)pixels);
        if (var_10 != var_12) break;
        pixels = (type_8 *)
                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);
        region.y = region.y + 1;
        var_13 = var_13 + 1;
      } while (var_13 < (long)local_90);
    }
    else {
      region.height = 1;
      var_10 = var_6;
      if (0 < (long)var_5) goto LAB_00169365;
      var_13 = 0;
    }
    var_14(cache_info->file_semaphore);
LAB_001693eb:
    if (var_13 < (long)local_90) {
      piVar7 = var_15();
      pcVar10 = var_16(*piVar7);
      var_17
                (exception,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,CacheError,
                 "UnableToWritePixelCache","\'%s\': %s",cache_info->cache_filename,pcVar10);
      var_18(pcVar10);
      var_22 = var_2;
      goto LAB_00169587;
    }
  }
  else {
    if (var_7 < var_19) {
      if (var_7 != var_20) goto LAB_001694d3;
      var_9(cache_info->file_semaphore);
      var_22 = var_21(cache_info,IOMode);
      if (var_22 == var_2) {
        piVar7 = var_15();
        pcVar10 = var_16(*piVar7);
        var_17
                  (exception,"MagickCore/cache.c","WritePixelCachePixels",0x1691,FileOpenError,
                   "UnableToOpenFile","\'%s\': %s",cache_info->cache_filename,pcVar10);
        var_18(pcVar10);
        var_14(cache_info->file_semaphore);
        var_22 = var_2;
        goto LAB_00169587;
      }
      if ((cache_info->columns == (nexus_info->region).width) && (var_10 < 0x14001)) {
        local_70 = 1;
LAB_001690e8:
        var_13 = 0;
        do {
          var_3 = cache_info->number_channels;
          var_4 = cache_info->offset;
          if ((long)var_10 < 1) {
            var_6 = 0;
          }
          else {
            var_6 = 0;
            do {
              __n = var_10 - var_6;
              if (0x7ffffffffffffffe < var_10 - var_6) {
                __n = 0x7fffffffffffffff;
              }
              var_25 = var_23(cache_info->file,(void *)((long)pixels + var_6),__n,
                             var_3 * 4 * var_24 + var_4 + var_6);
              if (var_25 < 1) {
                piVar7 = var_15();
                if (*piVar7 != 4) break;
                var_25 = 0;
              }
              var_6 = var_6 + var_25;
            } while ((long)var_6 < (long)var_10);
          }
          local_90 = local_70;
          if (var_10 != var_6) break;
          pixels = (type_8 *)
                   ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);
          var_24 = var_24 + cache_info->columns;
          var_13 = var_13 + 1;
        } while (var_13 < (long)local_70);
      }
      else {
        var_10 = var_6;
        local_70 = var_5;
        if (0 < (long)var_5) goto LAB_001690e8;
        var_13 = 0;
      }
      var_12 = var_26(FileResource);
      var_28 = var_27(FileResource);
      if (var_28 < var_12) {
        var_29(cache_info);
      }
      var_14(cache_info->file_semaphore);
      goto LAB_001693eb;
    }
    if (var_30 < var_7) {
LAB_001694d3:
      var_13 = 0;
      goto LAB_001693eb;
    }
    if (cache_info->columns == var_3) {
      var_32 = (type_8 *)(var_24 * var_4 + (long)cache_info->pixels);
      var_5 = 1;
LAB_0016912c:
      var_4 = 0;
      do {
        var_31(var_32,pixels,var_10);
        pixels = (type_8 *)
                 ((long)pixels + cache_info->number_channels * 4 * (nexus_info->region).width);
        var_32 = var_32 + cache_info->number_channels * cache_info->columns;
        var_4 = var_4 + 1;
      } while (var_4 < (long)var_5);
    }
    else {
      var_32 = (type_8 *)(var_24 * var_4 + (long)cache_info->pixels);
      var_10 = var_6;
      if (0 < (long)var_5) goto LAB_0016912c;
    }
  }
  var_22 = MagickTrue;
  if (cache_info->debug != var_2) {
    var_10 = cache_info->rows;
    var_6 = (nexus_info->region).y;
    if (((var_10 < 0x65) || (var_6 == var_10 - 1)) || (var_6 % (var_10 / 100) == 0)) {
      var_33(CacheEvent,"MagickCore/cache.c","WritePixelCachePixels",0x16d3,
                     "%s[%.20gx%.20g%+.20g%+.20g]",(double)(nexus_info->region).width,
                     (double)(nexus_info->region).height,(double)(nexus_info->region).x,
                     (double)(long)var_6,cache_info->filename);
      var_22 = MagickTrue;
    }
  }
LAB_00169587:
  if (var_34 == *(long *)(var_1 + 0x28)) {
    return var_22;
  }
                    /* WARNING: Subroutine does not return */
  var_35();
}


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

undefined4 MASKED(long param_1,long param_2,undefined8 param_3)

{
  uint uVar1;
  long lVar2;
  undefined4 uVar3;
  int iVar4;
  long lVar5;
  long lVar6;
  int *piVar7;
  undefined8 uVar8;
  ulong __n;
  long lVar9;
  void *__dest;
  ulong uVar10;
  ulong uVar11;
  void *__src;
  long in_FS_OFFSET;
  long local_a0;
  long local_98;
  long local_90;
  long local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  long local_50;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (*(int *)(param_2 + 0x40) != 0) {
    uVar3 = 1;
    goto LAB_00169587;
  }
  lVar9 = *(long *)(param_1 + 0x10) * *(long *)(param_2 + 0x20) + *(long *)(param_2 + 0x18);
  lVar5 = *(long *)(param_1 + 0x28) * 4;
  uVar11 = *(long *)(param_2 + 8) * lVar5;
  local_a0 = *(long *)(param_2 + 0x10);
  uVar10 = local_a0 * uVar11;
  __src = *(void **)(param_2 + 0x38);
  uVar1 = *(uint *)(param_1 + 0x430);
  local_90 = local_a0;
  if (uVar1 == 2) {
    LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
    local_68 = *(undefined8 *)(param_2 + 8);
    local_60 = *(undefined8 *)(param_2 + 0x10);
    local_58 = *(undefined8 *)(param_2 + 0x18);
    local_50 = *(long *)(param_2 + 0x20);
    if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {
      local_90 = 1;
LAB_00169365:
      local_98 = 0;
      do {
        uVar11 = FUN_001c4c55(*(undefined8 *)(param_1 + 0x2538),&local_68,uVar10,__src);
        if (uVar10 != uVar11) break;
        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));
        local_50 = local_50 + 1;
        local_98 = local_98 + 1;
      } while (local_98 < local_90);
    }
    else {
      local_60 = 1;
      uVar10 = uVar11;
      if (0 < local_a0) goto LAB_00169365;
      local_98 = 0;
    }
    UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
LAB_001693eb:
    if (local_98 < local_90) {
      piVar7 = __errno_location();
      uVar8 = GetExceptionMessage(*piVar7);
      ThrowMagickException
                (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x16ce,0x1bd,
                 "UnableToWritePixelCache","\'%s\': %s",param_1 + 0x14d4,uVar8);
      DestroyString(uVar8);
      uVar3 = 0;
      goto LAB_00169587;
    }
  }
  else {
    if (uVar1 < 3) {
      if (uVar1 != 1) goto LAB_001694d3;
      LockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
      iVar4 = FUN_001681c8(param_1,2);
      if (iVar4 == 0) {
        piVar7 = __errno_location();
        uVar8 = GetExceptionMessage(*piVar7);
        ThrowMagickException
                  (param_3,"MagickCore/cache.c","WritePixelCachePixels",0x1691,0x1ae,
                   "UnableToOpenFile","\'%s\': %s",param_1 + 0x14d4,uVar8);
        DestroyString(uVar8);
        UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
        uVar3 = 0;
        goto LAB_00169587;
      }
      if ((*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) && (uVar10 < 0x14001)) {
        local_70 = 1;
LAB_001690e8:
        local_98 = 0;
        do {
          lVar5 = *(long *)(param_1 + 0x28);
          lVar2 = *(long *)(param_1 + 0x440);
          if ((long)uVar10 < 1) {
            uVar11 = 0;
          }
          else {
            uVar11 = 0;
            do {
              __n = uVar10 - uVar11;
              if (0x7ffffffffffffffe < uVar10 - uVar11) {
                __n = 0x7fffffffffffffff;
              }
              lVar6 = pwrite(*(int *)(param_1 + 0x4d0),(void *)((long)__src + uVar11),__n,
                             lVar5 * 4 * lVar9 + lVar2 + uVar11);
              if (lVar6 < 1) {
                piVar7 = __errno_location();
                if (*piVar7 != 4) break;
                lVar6 = 0;
              }
              uVar11 = uVar11 + lVar6;
            } while ((long)uVar11 < (long)uVar10);
          }
          local_90 = local_70;
          if (uVar10 != uVar11) break;
          __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));
          lVar9 = lVar9 + *(long *)(param_1 + 0x10);
          local_98 = local_98 + 1;
        } while (local_98 < local_70);
      }
      else {
        uVar10 = uVar11;
        local_70 = local_a0;
        if (0 < local_a0) goto LAB_001690e8;
        local_98 = 0;
      }
      uVar10 = GetMagickResource(3);
      uVar11 = GetMagickResourceLimit(3);
      if (uVar11 < uVar10) {
        FUN_00167e4e(param_1);
      }
      UnlockSemaphoreInfo(*(undefined8 *)(param_1 + 0x2560));
      goto LAB_001693eb;
    }
    if (4 < uVar1) {
LAB_001694d3:
      local_98 = 0;
      goto LAB_001693eb;
    }
    if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 8)) {
      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));
      local_a0 = 1;
LAB_0016912c:
      lVar5 = 0;
      do {
        memcpy(__dest,__src,uVar10);
        __src = (void *)((long)__src + *(long *)(param_1 + 0x28) * 4 * *(long *)(param_2 + 8));
        __dest = (void *)((long)__dest + *(long *)(param_1 + 0x28) * *(long *)(param_1 + 0x10) * 4);
        lVar5 = lVar5 + 1;
      } while (lVar5 < local_a0);
    }
    else {
      __dest = (void *)(lVar9 * lVar5 + *(long *)(param_1 + 0x4c0));
      uVar10 = uVar11;
      if (0 < local_a0) goto LAB_0016912c;
    }
  }
  uVar3 = 1;
  if (*(int *)(param_1 + 0x2544) != 0) {
    uVar10 = *(ulong *)(param_1 + 0x18);
    uVar11 = *(ulong *)(param_2 + 0x20);
    if (((uVar10 < 0x65) || (uVar11 == uVar10 - 1)) || (uVar11 % (uVar10 / 100) == 0)) {
      LogMagickEvent((double)*(ulong *)(param_2 + 8),(double)*(ulong *)(param_2 + 0x10),
                     (double)*(long *)(param_2 + 0x18),(double)(long)uVar11,8,"MagickCore/cache.c",
                     "WritePixelCachePixels",0x16d3,"%s[%.20gx%.20g%+.20g%+.20g]",param_1 + 0x4d4);
      uVar3 = 1;
    }
  }
LAB_00169587:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar3;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

