
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */

MagickBooleanType __regparm3 GetEXIFProperty(Image *image,char *property,ExceptionInfo *exception)

{
  ushort *puVar1;
  int iVar2;
  byte bVar3;
  char cVar4;
  size_t *psVar5;
  uint uVar6;
  ushort uVar7;
  ushort uVar8;
  StringInfo *string_info;
  ushort **ppuVar9;
  size_t sVar10;
  int iVar11;
  uint uVar12;
  ushort *puVar13;
  uint uVar14;
  SplayTreeInfo *splay_tree;
  ushort *puVar15;
  MagickBooleanType MVar16;
  char *pcVar17;
  void *pvVar18;
  char *pcVar19;
  size_t sVar20;
  ushort *puVar21;
  uint uVar22;
  uint extraout_ECX;
  uchar *puVar23;
  int iVar24;
  TagInfo *pTVar25;
  int iVar26;
  ushort *key_00;
  uint uVar27;
  ssize_t sVar28;
  int in_GS_OFFSET;
  bool bVar29;
  uint local_1160;
  int local_1158;
  uint local_1150;
  EndianType local_114c;
  uint local_1148;
  ushort *local_1144;
  ushort *local_1140;
  int local_1134;
  int local_112c;
  ushort *local_1110;
  MagickBooleanType local_1104;
  char *key;
  DirectoryInfo directory_stack [16];
  char buffer [4096];
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  string_info = GetImageProfile(image,"exif");
  if (((string_info != (StringInfo *)0x0) && (property != (char *)0x0)) &&
     (bVar3 = *property, bVar3 != 0)) {
    ppuVar9 = __ctype_b_loc();
    while ((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0) {
      property = (char *)((byte *)property + 1);
      bVar3 = *property;
    }
    sVar10 = strlen(property);
    if (5 < sVar10) {
      bVar3 = ((byte *)property)[5];
      if (bVar3 == 0x23) {
LAB_00123edc:
        property = (char *)((byte *)property + 6);
        sVar10 = strlen(property);
        if (sVar10 == 4) {
          local_1160 = (uint)(bVar3 == 0x40);
          do {
            iVar11 = (int)*property;
            local_1160 = local_1160 << 4;
            if (iVar11 - 0x30U < 10) {
              local_1160 = local_1160 | iVar11 - 0x30U;
            }
            else if (iVar11 - 0x41U < 6) {
              local_1160 = local_1160 | iVar11 - 0x37U;
            }
            else {
              if (5 < iVar11 - 0x61U) goto LAB_00123f58;
              local_1160 = local_1160 | iVar11 - 0x57U;
            }
            property = (char *)((byte *)property + 1);
          } while (*property != 0);
LAB_00123f24:
          if (local_1160 != 0xffffffff) {
            local_1158 = 0;
            goto LAB_00123f38;
          }
        }
      }
      else {
        if ((char)bVar3 < '$') {
          local_1158 = 2;
          local_1160 = 0;
          if (bVar3 != 0x21) {
LAB_00123f95:
            local_1160 = 1;
            pcVar19 = GetEXIFProperty::EXIFTag[0].description;
            do {
              iVar11 = LocaleCompare(pcVar19,property);
              if (iVar11 == 0) goto LAB_00123f24;
              local_1160 = *(uint *)(pcVar19 + 0x24);
              pcVar19 = pcVar19 + 0x28;
            } while (local_1160 != 0);
            goto LAB_00123f58;
          }
        }
        else {
          if (bVar3 != 0x2a) {
            if (bVar3 != 0x40) goto LAB_00123f95;
            goto LAB_00123edc;
          }
          local_1158 = 1;
          local_1160 = 0;
        }
LAB_00123f38:
        uVar12 = GetStringInfoLength(string_info);
        if (5 < uVar12) {
          puVar13 = (ushort *)GetStringInfoDatum(string_info);
          do {
            cVar4 = (char)*puVar13;
            puVar21 = puVar13;
            uVar6 = uVar12;
            while (uVar12 = uVar6 - 1, cVar4 != 'E') {
              if (uVar12 == 0) goto LAB_00123f58;
              puVar21 = (ushort *)((int)puVar21 + 1);
              uVar6 = uVar12;
              cVar4 = *(char *)puVar21;
            }
            if (uVar12 == 0) break;
            uVar12 = uVar6 - 2;
            if (*(char *)((int)puVar21 + 1) == 'x') {
              if (uVar12 == 0) break;
              uVar12 = uVar6 - 3;
              if ((char)puVar21[1] == 'i') {
                if (uVar12 == 0) break;
                uVar12 = uVar6 - 4;
                if (*(char *)((int)puVar21 + 3) == 'f') {
                  if (uVar12 == 0) break;
                  uVar12 = uVar6 - 5;
                  if ((char)puVar21[2] == '\0') {
                    if (uVar12 == 0) break;
                    puVar13 = puVar21 + 3;
                    uVar12 = uVar6 - 6;
                    if (*(char *)((int)puVar21 + 5) == '\0') {
                      if (uVar12 < 0x10) break;
                      if (puVar21[3] == 0x4949) {
                        if (puVar21[4] != 0x2a) break;
                        uVar14 = *(uint *)(puVar21 + 5);
                        local_114c = LSBEndian;
                      }
                      else {
                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;
                        uVar14 = *(uint *)(puVar21 + 5);
                        local_114c = MSBEndian;
                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8
                                 | uVar14 << 0x18;
                      }
                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {
                        local_1110 = (ushort *)(uVar14 + (int)puVar13);
                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,
                                                  (_func_void_ptr_void_ptr *)0x0,
                                                  (_func_void_ptr_void_ptr *)0x0);
                        local_1134 = 0;
                        local_112c = 0;
                        local_1150 = 0;
                        local_1104 = MagickFalse;
                        goto LAB_00124153;
                      }
                      break;
                    }
                  }
                  else {
                    puVar13 = (ushort *)((int)puVar21 + 5);
                  }
                }
                else {
                  puVar13 = puVar21 + 2;
                }
              }
              else {
                puVar13 = (ushort *)((int)puVar21 + 3);
              }
            }
            else {
              puVar13 = puVar21 + 1;
            }
          } while (uVar12 != 0);
        }
      }
    }
  }
LAB_00123f58:
  local_1104 = MagickFalse;
LAB_00123f5a:
  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_1104;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
LAB_00124153:
  if ((puVar13 <= local_1110) && (local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2)))) {
    uVar8 = *local_1110;
    if (local_114c != LSBEndian) {
      uVar8 = uVar8 << 8 | uVar8 >> 8;
    }
    uVar14 = (uint)uVar8;
    iVar11 = local_112c;
    if (local_1150 < uVar14) {
      key_00 = local_1110 + local_1150 * 6 + 1;
      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));
      if (key_00 <= puVar1) {
        iVar26 = local_1150 * 0xc - (int)key_00;
        local_1144 = local_1110 + local_1150 * 6 + 7;
        do {
          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);
          if (puVar15 == key_00) break;
          AddValueToSplayTree(splay_tree,key_00,key_00);
          if (local_114c == LSBEndian) {
            uVar8 = key_00[1];
            uVar7 = *key_00;
            if (0xb < (ushort)(uVar8 - 1)) break;
            uVar27 = *(uint *)(key_00 + 2);
          }
          else {
            uVar7 = *key_00 << 8 | *key_00 >> 8;
            uVar8 = key_00[1] << 8 | key_00[1] >> 8;
            if (0xb < (ushort)(uVar8 - 1)) break;
            uVar27 = *(uint *)(key_00 + 2);
            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |
                     uVar27 << 0x18;
          }
          local_1148 = (uint)uVar7 + local_1134;
          if ((int)uVar27 < 0) break;
          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;
          if ((int)uVar22 < (int)uVar27) break;
          if ((int)uVar22 < 5) {
            local_1140 = key_00 + 4;
LAB_001241d4:
            if ((local_1158 != 0) || (local_1160 == local_1148)) {
              if ((local_1140 < puVar13) ||
                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <
                  local_1140)) break;
              if (uVar8 < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */
                    /* WARNING: Treating indirect jump as call */
                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +
                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();
                return MVar16;
              }
              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {
                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);
                iVar24 = 0;
                if (pcVar19 != (char *)0x0) {
                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {
                    pcVar19[iVar24] = '.';
                    bVar3 = *(byte *)((int)local_1140 + iVar24);
                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||
                       (bVar3 == 0)) {
                      pcVar19[iVar24] = bVar3;
                    }
                  }
                  pcVar19[uVar22] = '\0';
                  key = AcquireString(property);
                  if (local_1158 == 1) {
                    if (local_1148 == 1) {
                      iVar24 = 0;
LAB_00124bb8:
                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);
                    }
                    else {
                      pTVar25 = GetEXIFProperty::EXIFTag + 2;
                      iVar24 = 0;
                      sVar20 = 2;
                      while (iVar24 = iVar24 + 1, sVar20 != 0) {
                        if (sVar20 == local_1148) goto LAB_00124bb8;
                        psVar5 = &pTVar25->tag;
                        pTVar25 = pTVar25 + 1;
                        sVar20 = *psVar5;
                      }
                      pcVar17 = "unknown";
                    }
                    FormatLocaleString(key,0x1000,"%s",pcVar17);
LAB_00124b46:
                    if (local_112c == 2) {
                      SubstituteString(&key,"exif:","exif:thumbnail:");
                    }
                  }
                  else {
                    if (local_1158 != 2) goto LAB_00124b46;
                    if (local_1148 < 0x10000) {
                      pcVar17 = "#%04lx";
                      uVar27 = local_1148;
                    }
                    else if (local_1148 < 0x20000) {
                      pcVar17 = "@%04lx";
                      uVar27 = local_1148 & 0xffff;
                    }
                    else {
                      pcVar17 = "unknown";
                      uVar27 = extraout_ECX;
                    }
                    FormatLocaleString(key,0x1000,pcVar17,uVar27);
                  }
                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||
                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),
                     pvVar18 == (void *)0x0)) {
                    SetImageProperty(image,key,pcVar19,exception);
                  }
                  DestroyString(pcVar19);
                  DestroyString(key);
                  local_1104 = MagickTrue;
                }
              }
            }
            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {
              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);
              if (uVar27 < uVar12) {
                if (0xd < local_112c) goto LAB_00124aba;
                sVar28 = 0x10000;
                if (local_1148 != 0x8825) {
                  sVar28 = 0;
                }
                iVar11 = local_112c + 1;
                directory_stack[local_112c].directory = (uchar *)local_1110;
                directory_stack[local_112c].entry = local_1150 + 1;
                directory_stack[local_112c].offset = local_1134;
                iVar26 = 0;
                puVar23 = (uchar *)((int)puVar13 + uVar27);
                goto LAB_00124c76;
              }
              break;
            }
          }
          else {
            uVar27 = *(uint *)(key_00 + 4);
            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |
                     uVar27 << 0x18;
            if (local_114c == LSBEndian) {
              uVar27 = *(uint *)(key_00 + 4);
            }
            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&
               (!CARRY4(uVar22,uVar27))) {
              local_1140 = (ushort *)(uVar27 + (int)puVar13);
              goto LAB_001241d4;
            }
          }
          local_1150 = local_1150 + 1;
          if (uVar14 == local_1150) break;
          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));
          bVar29 = local_1144 <= puVar1;
          local_1144 = local_1144 + 6;
        } while (bVar29);
      }
    }
    if (local_112c != 0) goto LAB_00124aba;
  }
  goto LAB_00124b97;
  while (iVar26 = iVar26 + 1, iVar26 < iVar11) {
LAB_00124c76:
    if (directory_stack[iVar26].directory == puVar23) {
      puVar23 = directory_stack[iVar26].directory;
      if (iVar26 < iVar11) goto LAB_00124aba;
      break;
    }
  }
  directory_stack[iVar11].directory = puVar23;
  directory_stack[iVar11].offset = sVar28;
  directory_stack[iVar11].entry = 0;
  iVar11 = local_112c + 2;
  if (((local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&
      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),
      uVar14 != 0)) && ((iVar11 < 0xe && (uVar14 < uVar12)))) {
    directory_stack[iVar11].entry = 0;
    directory_stack[iVar11].directory = (uchar *)(uVar14 + (int)puVar13);
    directory_stack[iVar11].offset = sVar28;
    iVar11 = local_112c + 3;
  }
LAB_00124aba:
  local_112c = iVar11;
  local_112c = local_112c + -1;
  local_1110 = (ushort *)directory_stack[local_112c].directory;
  local_1150 = directory_stack[local_112c].entry;
  local_1134 = directory_stack[local_112c].offset;
  goto LAB_00124153;
LAB_00124b97:
  DestroySplayTree(splay_tree);
  goto LAB_00123f5a;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 __regparm3 FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)

{
  ushort *puVar1;
  byte bVar2;
  char cVar3;
  uint uVar4;
  ushort uVar5;
  ushort uVar6;
  int iVar7;
  ushort **ppuVar8;
  size_t sVar9;
  int iVar10;
  ushort *puVar11;
  uint uVar12;
  undefined4 uVar13;
  ushort *puVar14;
  int iVar15;
  ushort *puVar16;
  uint uVar17;
  Elf32_Ehdr *extraout_ECX;
  char *pcVar18;
  uint uVar19;
  int iVar20;
  undefined4 *puVar21;
  ushort *puVar22;
  Elf32_Ehdr *pEVar23;
  uint uVar24;
  int in_GS_OFFSET;
  bool bVar25;
  Elf32_Ehdr *local_1160;
  int local_1158;
  uint local_1150;
  int local_114c;
  Elf32_Ehdr *local_1148;
  ushort *local_1144;
  ushort *local_1140;
  uint local_1134;
  int local_112c;
  ushort *local_1110;
  undefined4 local_1104;
  undefined4 local_10e4;
  uint local_10e0 [48];
  undefined1 local_1020;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x123e2d;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar7 = GetImageProfile(param_1,&DAT_002c0184);
  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {
    ppuVar8 = __ctype_b_loc();
    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {
      param_2 = param_2 + 1;
      bVar2 = *param_2;
    }
    sVar9 = strlen((char *)param_2);
    if (5 < sVar9) {
      bVar2 = param_2[5];
      if (bVar2 == 0x23) {
LAB_00123edc:
        param_2 = param_2 + 6;
        sVar9 = strlen((char *)param_2);
        if (sVar9 == 4) {
          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);
          do {
            iVar10 = (int)(char)*param_2;
            uVar19 = (int)local_1160 << 4;
            if (iVar10 - 0x30U < 10) {
              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);
            }
            else if (iVar10 - 0x41U < 6) {
              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);
            }
            else {
              if (5 < iVar10 - 0x61U) goto LAB_00123f58;
              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);
            }
            param_2 = param_2 + 1;
          } while (*param_2 != 0);
LAB_00123f24:
          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {
            local_1158 = 0;
            goto LAB_00123f38;
          }
        }
      }
      else {
        if ((char)bVar2 < '$') {
          local_1158 = 2;
          local_1160 = (Elf32_Ehdr *)0x0;
          if (bVar2 != 0x21) {
LAB_00123f95:
            local_1160 = (Elf32_Ehdr *)0x1;
            pcVar18 = "exif:InteroperabilityIndex";
            do {
              iVar10 = LocaleCompare(pcVar18,param_2);
              if (iVar10 == 0) goto LAB_00123f24;
              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);
              pcVar18 = pcVar18 + 0x28;
            } while (local_1160 != (Elf32_Ehdr *)0x0);
            goto LAB_00123f58;
          }
        }
        else {
          if (bVar2 != 0x2a) {
            if (bVar2 != 0x40) goto LAB_00123f95;
            goto LAB_00123edc;
          }
          local_1158 = 1;
          local_1160 = (Elf32_Ehdr *)0x0;
        }
LAB_00123f38:
        uVar19 = GetStringInfoLength(iVar7);
        if (5 < uVar19) {
          puVar11 = (ushort *)GetStringInfoDatum(iVar7);
          do {
            cVar3 = (char)*puVar11;
            puVar16 = puVar11;
            uVar4 = uVar19;
            while (uVar19 = uVar4 - 1, cVar3 != 'E') {
              if (uVar19 == 0) goto LAB_00123f58;
              puVar16 = (ushort *)((int)puVar16 + 1);
              uVar4 = uVar19;
              cVar3 = *(char *)puVar16;
            }
            if (uVar19 == 0) break;
            uVar19 = uVar4 - 2;
            if (*(char *)((int)puVar16 + 1) == 'x') {
              if (uVar19 == 0) break;
              uVar19 = uVar4 - 3;
              if ((char)puVar16[1] == 'i') {
                if (uVar19 == 0) break;
                uVar19 = uVar4 - 4;
                if (*(char *)((int)puVar16 + 3) == 'f') {
                  if (uVar19 == 0) break;
                  uVar19 = uVar4 - 5;
                  if ((char)puVar16[2] == '\0') {
                    if (uVar19 == 0) break;
                    puVar11 = puVar16 + 3;
                    uVar19 = uVar4 - 6;
                    if (*(char *)((int)puVar16 + 5) == '\0') {
                      if (uVar19 < 0x10) break;
                      if (puVar16[3] == 0x4949) {
                        if (puVar16[4] != 0x2a) break;
                        uVar12 = *(uint *)(puVar16 + 5);
                        local_114c = 1;
                      }
                      else {
                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;
                        uVar12 = *(uint *)(puVar16 + 5);
                        local_114c = 2;
                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8
                                 | uVar12 << 0x18;
                      }
                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {
                        local_1110 = (ushort *)(uVar12 + (int)puVar11);
                        uVar13 = NewSplayTree(0,0,0,local_1110);
                        local_1134 = 0;
                        local_112c = 0;
                        local_1150 = 0;
                        local_1104 = 0;
                        goto LAB_00124153;
                      }
                      break;
                    }
                  }
                  else {
                    puVar11 = (ushort *)((int)puVar16 + 5);
                  }
                }
                else {
                  puVar11 = puVar16 + 2;
                }
              }
              else {
                puVar11 = (ushort *)((int)puVar16 + 3);
              }
            }
            else {
              puVar11 = puVar16 + 1;
            }
          } while (uVar19 != 0);
        }
      }
    }
  }
LAB_00123f58:
  local_1104 = 0;
LAB_00123f5a:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_1104;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0029eab0();
LAB_00124153:
  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {
    uVar6 = *local_1110;
    if (local_114c != 1) {
      uVar6 = uVar6 << 8 | uVar6 >> 8;
    }
    uVar12 = (uint)uVar6;
    iVar7 = local_112c;
    if (local_1150 < uVar12) {
      puVar22 = local_1110 + local_1150 * 6 + 1;
      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));
      if (puVar22 <= puVar1) {
        iVar10 = local_1150 * 0xc - (int)puVar22;
        local_1144 = local_1110 + local_1150 * 6 + 7;
        do {
          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);
          if (puVar14 == puVar22) break;
          AddValueToSplayTree(uVar13,puVar22,puVar22);
          if (local_114c == 1) {
            uVar6 = puVar22[1];
            uVar5 = *puVar22;
            if (0xb < (ushort)(uVar6 - 1)) break;
            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);
          }
          else {
            uVar5 = *puVar22 << 8 | *puVar22 >> 8;
            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;
            if (0xb < (ushort)(uVar6 - 1)) break;
            uVar17 = *(uint *)(puVar22 + 2);
            pEVar23 = (Elf32_Ehdr *)
                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |
                      uVar17 << 0x18);
          }
          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);
          if ((int)pEVar23 < 0) break;
          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;
          if ((int)uVar17 < (int)pEVar23) break;
          if ((int)uVar17 < 5) {
            local_1140 = puVar22 + 4;
LAB_001241d4:
            if ((local_1158 != 0) || (local_1160 == local_1148)) {
              if ((local_1140 < puVar11) ||
                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <
                  local_1140)) break;
              local_1020 = 0;
              if (uVar6 < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */
                    /* WARNING: Treating indirect jump as call */
                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))
                                   ();
                return uVar13;
              }
              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);
              if (local_1140 <= puVar14) {
                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);
                iVar20 = 0;
                if (iVar15 != 0) {
                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {
                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;
                    bVar2 = *(byte *)((int)local_1140 + iVar20);
                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;
                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)
                       ) {
                      *(byte *)(iVar15 + iVar20) = bVar2;
                    }
                  }
                  *(undefined1 *)(iVar15 + uVar17) = 0;
                  local_10e4 = AcquireString(param_2);
                  if (local_1158 == 1) {
                    if (local_1148 == (Elf32_Ehdr *)0x1) {
                      iVar20 = 0;
LAB_00124bb8:
                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;
                    }
                    else {
                      iVar20 = 0;
                      pEVar23 = (Elf32_Ehdr *)0x2;
                      puVar21 = &DAT_002c0cb0;
                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {
                        if (pEVar23 == local_1148) goto LAB_00124bb8;
                        pEVar23 = (Elf32_Ehdr *)*puVar21;
                        puVar21 = puVar21 + 10;
                      }
                      pcVar18 = "unknown";
                    }
                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);
                    pEVar23 = local_1148;
LAB_00124b46:
                    if (local_112c == 2) {
                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);
                    }
                  }
                  else {
                    if (local_1158 != 2) goto LAB_00124b46;
                    if (local_1148 < &Elf32_Ehdr_00010000) {
                      pcVar18 = "#%04lx";
                      pEVar23 = local_1148;
                    }
                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {
                      pcVar18 = "unknown";
                      pEVar23 = extraout_ECX;
                    }
                    else {
                      pcVar18 = "@%04lx";
                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);
                    }
                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);
                  }
                  if ((*(int *)(param_1 + 0x310) == 0) ||
                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),
                     iVar20 == 0)) {
                    SetImageProperty(param_1,local_10e4,iVar15,param_3);
                  }
                  DestroyString(iVar15);
                  DestroyString(local_10e4);
                  local_1104 = 1;
                }
              }
            }
            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||
               (local_1148 == (Elf32_Ehdr *)0x8825)) {
              uVar17 = FUN_00121780();
              if (uVar17 < uVar19) {
                if (0xd < local_112c) goto LAB_00124aba;
                uVar24 = 0x10000;
                if (local_1148 != (Elf32_Ehdr *)0x8825) {
                  uVar24 = 0;
                }
                iVar7 = local_112c + 1;
                local_10e0[local_112c * 3] = (uint)local_1110;
                local_10e0[local_112c * 3 + 1] = local_1150 + 1;
                local_10e0[local_112c * 3 + 2] = local_1134;
                iVar10 = 0;
                pcVar18 = (char *)((int)puVar11 + uVar17);
                goto LAB_00124c76;
              }
              break;
            }
          }
          else {
            uVar24 = *(uint *)(puVar22 + 4);
            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |
                     uVar24 << 0x18;
            if (local_114c == 1) {
              uVar24 = *(uint *)(puVar22 + 4);
            }
            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&
               (!CARRY4(uVar17,uVar24))) {
              local_1140 = (ushort *)(uVar24 + (int)puVar11);
              goto LAB_001241d4;
            }
          }
          local_1150 = local_1150 + 1;
          if (uVar12 == local_1150) break;
          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));
          bVar25 = local_1144 <= puVar1;
          local_1144 = local_1144 + 6;
        } while (bVar25);
      }
    }
    if (local_112c != 0) goto LAB_00124aba;
  }
  goto LAB_00124b97;
  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {
LAB_00124c76:
    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {
      pcVar18 = (char *)local_10e0[iVar10 * 3];
      if (iVar10 < iVar7) goto LAB_00124aba;
      break;
    }
  }
  local_10e0[iVar7 * 3] = (uint)pcVar18;
  local_10e0[iVar7 * 3 + 2] = uVar24;
  local_10e0[iVar7 * 3 + 1] = 0;
  iVar7 = local_112c + 2;
  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&
      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {
    local_10e0[iVar7 * 3 + 1] = 0;
    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);
    local_10e0[iVar7 * 3 + 2] = uVar24;
    iVar7 = local_112c + 3;
  }
LAB_00124aba:
  local_112c = iVar7;
  local_112c = local_112c + -1;
  local_1110 = (ushort *)local_10e0[local_112c * 3];
  local_1150 = local_10e0[local_112c * 3 + 1];
  local_1134 = local_10e0[local_112c * 3 + 2];
  goto LAB_00124153;
LAB_00124b97:
  DestroySplayTree(uVar13);
  goto LAB_00123f5a;
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
MOV EDI,EAX
PUSH ESI
PUSH EBX
CALL 0x00038830
ADD EBX,0x2b51d3
SUB ESP,0x1164
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1154],EAX
XOR EAX,EAX
MOV dword ptr [ESP + 0x10],ECX
LEA EAX,[EBX + 0xffee7184]
PUSH EAX
PUSH EDI
CALL 0x00031c60
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00123f58
TEST EBP,EBP
JZ 0x00123f58
MOVZX EDX,byte ptr [EBP]
TEST DL,DL
MOV byte ptr [ESP + 0xc],DL
JZ 0x00123f58
MOV ESI,EAX
CALL 0x00031ac0
MOVZX EDX,byte ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EAX]
JMP 0x00123e9f
ADD EBP,0x1
MOVZX EDX,byte ptr [EBP]
TEST byte ptr [EAX + EDX*0x2 + 0x1],0x20
JNZ 0x00123e98
SUB ESP,0xc
PUSH EBP
CALL 0x00031eb0
ADD ESP,0x10
CMP EAX,0x5
JBE 0x00123f58
MOVZX EDX,byte ptr [EBP + 0x5]
CMP DL,0x23
JZ 0x00123edc
JLE 0x00123f80
CMP DL,0x2a
JZ 0x00123fe0
CMP DL,0x40
JNZ 0x00123f95
MOV byte ptr [ESP + 0xc],DL
ADD EBP,0x6
SUB ESP,0xc
PUSH EBP
CALL 0x00031eb0
ADD ESP,0x10
MOVZX EDX,byte ptr [ESP + 0xc]
CMP EAX,0x4
JNZ 0x00123f58
CMP DL,0x40
SETZ DL
MOVZX EDX,DL
MOVSX EAX,byte ptr [EBP]
SHL EDX,0x4
LEA ECX,[EAX + -0x30]
CMP ECX,0x9
JA 0x00124330
OR EDX,ECX
ADD EBP,0x1
CMP byte ptr [EBP],0x0
JNZ 0x00123f02
MOV dword ptr [ESP + 0xc],EDX
CMP dword ptr [ESP + 0xc],-0x1
JZ 0x00123f58
MOV dword ptr [ESP + 0x14],0x0
NOP
LEA ESI,[ESI]
SUB ESP,0xc
PUSH ESI
CALL 0x000335d0
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0x10
CMP EAX,0x5
JA 0x00123ff8
LEA ESI,[ESI]
XOR EDI,EDI
MOV ECX,dword ptr [ESP + 0x114c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,EDI
JNZ 0x00124bf2
ADD ESP,0x115c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x14],0x2
MOV dword ptr [ESP + 0xc],0x0
CMP DL,0x21
JZ 0x00123f38
LEA EDI,[EBX + 0xffee7c64]
MOV EAX,0x1
MOV dword ptr [ESP + 0xc],ESI
MOV ESI,EDI
MOV EDI,EAX
JMP 0x00123fba
ADD ESI,0x28
MOV EDI,dword ptr [ESI + -0x4]
TEST EDI,EDI
JZ 0x00123f58
SUB ESP,0x8
PUSH EBP
PUSH ESI
CALL 0x000326f0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00123fb0
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0xc],EDI
JMP 0x00123f24
MOV dword ptr [ESP + 0x14],0x1
MOV dword ptr [ESP + 0xc],0x0
JMP 0x00123f38
SUB ESP,0xc
PUSH ESI
CALL 0x00033130
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x18]
CMP byte ptr [EAX],0x45
LEA EDX,[ESI + -0x1]
JZ 0x00124040
LEA ECX,[EAX + 0x1]
MOV ESI,EDX
MOV EAX,ECX
TEST EDX,EDX
JZ 0x00123f58
SUB EDX,0x1
ADD ECX,0x1
CMP byte ptr [EAX],0x45
JZ 0x00124040
MOV ESI,EDX
MOV EAX,ECX
TEST EDX,EDX
JNZ 0x0012401f
JMP 0x00123f58
TEST EDX,EDX
JZ 0x00123f58
CMP byte ptr [EAX + 0x1],0x78
LEA EDX,[ESI + -0x2]
JNZ 0x00124358
TEST EDX,EDX
JZ 0x00123f58
CMP byte ptr [EAX + 0x2],0x69
LEA EDX,[ESI + -0x3]
JNZ 0x00124a8b
TEST EDX,EDX
JZ 0x00123f58
CMP byte ptr [EAX + 0x3],0x66
LEA EDX,[ESI + -0x4]
JNZ 0x00124aef
TEST EDX,EDX
JZ 0x00123f58
CMP byte ptr [EAX + 0x4],0x0
LEA EDX,[ESI + -0x5]
JNZ 0x00124b8f
TEST EDX,EDX
JZ 0x00123f58
CMP byte ptr [EAX + 0x5],0x0
LEA ECX,[EAX + 0x6]
MOV dword ptr [ESP + 0x34],ECX
LEA EDX,[ESI + -0x6]
JNZ 0x00124baf
MOV dword ptr [ESP + 0x30],EDX
MOV dword ptr [ESP + 0x18],ESI
CMP EDX,0xf
JBE 0x00123f58
MOVSX EDX,word ptr [EAX + 0x6]
CMP EDX,0x4949
JZ 0x00124a93
CMP EDX,0x4d4d
JNZ 0x00123f58
CMP word ptr [EAX + 0x8],0x2a00
JNZ 0x00123f58
MOV EAX,dword ptr [EAX + 0xa]
MOV dword ptr [ESP + 0x20],0x2
BSWAP EAX
TEST EAX,EAX
JS 0x00123f58
CMP EAX,dword ptr [ESP + 0x30]
JNC 0x00123f58
MOV ESI,dword ptr [ESP + 0x34]
XOR EDI,EDI
ADD EAX,ESI
MOV dword ptr [ESP + 0x5c],EAX
PUSH EAX
PUSH 0x0
PUSH 0x0
PUSH 0x0
CALL 0x00031fc0
MOV dword ptr [ESP + 0x54],EAX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x1c],0x0
LEA EAX,[ESI + EAX*0x1 + -0x8]
MOV dword ptr [ESP + 0x68],EDI
MOV dword ptr [ESP + 0x64],EAX
MOV dword ptr [ESP + 0x6c],EBP
MOV ECX,dword ptr [ESP + 0x5c]
MOV EDI,dword ptr [ESP + 0x34]
CMP ECX,EDI
JC 0x00124b97
MOV EAX,dword ptr [ESP + 0x64]
CMP ECX,EAX
JA 0x00124b97
MOVZX EAX,word ptr [ECX]
MOV ESI,dword ptr [ESP + 0x1c]
MOV EDX,EAX
ROL DX,0x8
CMP dword ptr [ESP + 0x20],0x1
CMOVNZ EAX,EDX
MOVZX EAX,AX
MOV dword ptr [ESP + 0x50],EAX
CMP ESI,EAX
JNC 0x00124aae
LEA EAX,[ESI + ESI*0x2]
MOV ESI,dword ptr [ESP + 0x18]
SHL EAX,0x2
LEA EBP,[ECX + EAX*0x1 + 0x2]
LEA ESI,[EDI + ESI*0x1 + -0x12]
MOV dword ptr [ESP + 0x54],ESI
CMP EBP,ESI
JA 0x00124aae
LEA ESI,[ECX + EAX*0x1 + 0xe]
ADD EAX,ECX
SUB EAX,EBP
MOV dword ptr [ESP + 0x28],ESI
MOV dword ptr [ESP + 0x58],EAX
LEA EAX,[EBX + 0xffee71a8]
MOV dword ptr [ESP + 0x60],EAX
JMP 0x00124243
LEA EAX,[EBP + 0x8]
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JNZ 0x0012439a
MOV EDX,dword ptr [ESP + 0x24]
CMP dword ptr [ESP + 0xc],EDX
JZ 0x0012439a
MOV EAX,dword ptr [ESP + 0x24]
CMP EAX,0x8769
JZ 0x00124bc7
CMP EAX,0xa005
JZ 0x00124bc7
CMP EAX,0x8825
JZ 0x00124bc7
ADD dword ptr [ESP + 0x1c],0x1
MOV EAX,dword ptr [ESP + 0x1c]
CMP dword ptr [ESP + 0x50],EAX
JZ 0x00124aae
MOV EAX,dword ptr [ESP + 0x58]
MOV ECX,dword ptr [ESP + 0x28]
LEA EBP,[EBP + EAX*0x1 + 0xe]
LEA EAX,[ECX + 0xc]
CMP dword ptr [ESP + 0x54],ECX
JC 0x00124aae
MOV dword ptr [ESP + 0x28],EAX
SUB ESP,0x8
PUSH EBP
MOV ESI,dword ptr [ESP + 0x50]
PUSH ESI
CALL 0x00030d40
ADD ESP,0x10
CMP EAX,EBP
JZ 0x00124aae
SUB ESP,0x4
PUSH EBP
PUSH EBP
PUSH ESI
CALL 0x000327f0
ADD ESP,0x10
CMP dword ptr [ESP + 0x20],0x1
JZ 0x00124370
MOVZX EAX,word ptr [EBP]
ROL AX,0x8
MOVZX EAX,AX
ADD EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x24],EAX
MOVZX EAX,word ptr [EBP + 0x2]
ROL AX,0x8
LEA EDX,[EAX + -0x1]
MOV word ptr [ESP + 0x48],AX
MOVZX ESI,AX
CMP DX,0xb
JA 0x00124aae
MOV EDX,dword ptr [EBP + 0x4]
MOV EDI,EDX
BSWAP EDI
TEST EDI,EDI
JS 0x00124aae
MOV EAX,dword ptr [EBX + ESI*0x4 + 0xffee7c20]
MOV ECX,EAX
MOV dword ptr [ESP + 0x3c],EAX
IMUL ECX,EDI
CMP ECX,EDI
JL 0x00124aae
CMP ECX,0x4
JLE 0x001241cd
MOV EDX,dword ptr [EBP + 0x8]
CMP dword ptr [ESP + 0x20],0x1
BSWAP EDX
CMOVZ EDX,dword ptr [EBP + 0x8]
TEST EDX,EDX
MOV EAX,EDX
JS 0x00124213
MOV EDX,dword ptr [ESP + 0x30]
CMP EAX,EDX
JNC 0x00124213
MOV EDX,ECX
MOV dword ptr [ESP + 0x2c],EAX
ADD EDX,EAX
SETC AL
MOVZX EAX,AL
CMP EDX,dword ptr [ESP + 0x30]
JA 0x00124213
TEST EAX,EAX
JNZ 0x00124213
MOV EDX,dword ptr [ESP + 0x2c]
ADD EDX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x2c],EDX
JMP 0x001241d4
LEA ECX,[EAX + -0x41]
CMP ECX,0x5
JA 0x00124342
SUB EAX,0x37
OR EDX,EAX
JMP 0x00123f17
LEA ECX,[EAX + -0x61]
CMP ECX,0x5
JA 0x00123f58
SUB EAX,0x57
OR EDX,EAX
JMP 0x00123f17
ADD EAX,0x2
TEST EDX,EDX
JZ 0x00123f58
MOV ESI,EDX
JMP 0x00124008
MOVZX ESI,word ptr [EBP + 0x2]
MOVZX EAX,word ptr [EBP]
ADD EAX,dword ptr [ESP + 0x38]
LEA EDX,[ESI + -0x1]
MOV word ptr [ESP + 0x48],SI
MOV dword ptr [ESP + 0x24],EAX
CMP DX,0xb
JA 0x00124aae
MOV EDI,dword ptr [EBP + 0x4]
JMP 0x001242ac
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x34]
CMP EAX,EDX
JC 0x00124aae
MOV EDX,dword ptr [ESP + 0x30]
SUB EDX,dword ptr [ESP + 0x3c]
ADD EDX,dword ptr [ESP + 0x34]
CMP EAX,EDX
JA 0x00124aae
CMP word ptr [ESP + 0x48],0xc
MOV byte ptr [ESP + 0x14c],0x0
JA 0x00124a20
MOV EAX,dword ptr [EBX + ESI*0x4 + 0xffee75b8]
ADD EAX,EBX
JMP EAX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x78]
CALL 0x00030c00
MOV dword ptr [ESP + 0x4c],EAX
MOV dword ptr [ESP + 0x98],EAX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x14]
CMP EAX,0x1
JZ 0x00124af7
CMP EAX,0x2
JNZ 0x00124b46
CMP dword ptr [ESP + 0x24],0xffff
JBE 0x00124c03
MOV EAX,dword ptr [ESP + 0x24]
CMP EAX,0x1ffff
JA 0x00124bf7
MOVZX EAX,AX
PUSH EAX
LEA EAX,[EBX + 0xffee71c5]
PUSH EAX
PUSH 0x1000
PUSH dword ptr [ESP + 0x48]
CALL 0x000334e0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [EAX + 0x310]
TEST EAX,EAX
JZ 0x00124b72
SUB ESP,0x8
PUSH dword ptr [ESP + 0x90]
PUSH EAX
CALL 0x00030d40
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00124b72
SUB ESP,0xc
PUSH ESI
CALL 0x00032950
POP EDX
PUSH dword ptr [ESP + 0x94]
CALL 0x00032950
ADD ESP,0x10
MOV dword ptr [ESP + 0x68],0x1
JMP 0x001241ee
MOV EAX,dword ptr [ESP + 0x30]
SUB EAX,ECX
ADD EAX,dword ptr [ESP + 0x34]
CMP dword ptr [ESP + 0x2c],EAX
JA 0x001241ee
PUSH EAX
PUSH EAX
LEA EAX,[ECX + 0x1]
PUSH 0x1
MOV dword ptr [ESP + 0x48],ECX
PUSH EAX
CALL 0x000317b0
ADD ESP,0x10
XOR EDX,EDX
MOV ECX,dword ptr [ESP + 0x3c]
TEST EAX,EAX
MOV ESI,EAX
JZ 0x001241ee
MOV dword ptr [ESP + 0x3c],EBP
CMP EDX,ECX
JGE 0x00124c12
MOV EAX,dword ptr [ESP + 0x2c]
MOV byte ptr [ESI + EDX*0x1],0x2e
MOV EDI,dword ptr [ESP + 0x10]
MOVZX EBP,byte ptr [EAX + EDX*0x1]
MOV EDI,dword ptr [EDI]
MOV EAX,EBP
TEST byte ptr [EDI + EBP*0x2 + 0x1],0x40
JNZ 0x00124a83
TEST AL,AL
JNZ 0x00124a86
MOV byte ptr [ESI + EDX*0x1],AL
ADD EDX,0x1
JMP 0x00124a5c
ADD EAX,0x3
JMP 0x0012435b
CMP word ptr [EAX + 0x8],0x2a
JNZ 0x00123f58
MOV EAX,dword ptr [EAX + 0xa]
MOV dword ptr [ESP + 0x20],0x1
JMP 0x001240f6
MOV EAX,dword ptr [ESP + 0x40]
TEST EAX,EAX
JZ 0x00124b97
SUB dword ptr [ESP + 0x40],0x1
MOV EAX,dword ptr [ESP + 0x40]
LEA EAX,[EAX + EAX*0x2]
SHL EAX,0x2
MOV ECX,dword ptr [ESP + EAX*0x1 + 0x8c]
MOV dword ptr [ESP + 0x5c],ECX
MOV ECX,dword ptr [ESP + EAX*0x1 + 0x90]
MOV EAX,dword ptr [ESP + EAX*0x1 + 0x94]
MOV dword ptr [ESP + 0x1c],ECX
MOV dword ptr [ESP + 0x38],EAX
JMP 0x00124153
ADD EAX,0x4
JMP 0x0012435b
MOV EDI,dword ptr [ESP + 0x24]
CMP EDI,0x1
JZ 0x00124bb6
LEA EDX,[EBX + 0xffee7cb0]
MOV EAX,0x2
XOR ECX,ECX
JMP 0x00124b20
CMP EAX,EDI
JZ 0x00124bb8
MOV EAX,dword ptr [EDX]
ADD EDX,0x28
ADD ECX,0x1
TEST EAX,EAX
JNZ 0x00124b13
LEA EAX,[EBX + 0xffed2d8a]
PUSH EAX
LEA EAX,[EBX + 0xffedde4e]
PUSH EAX
PUSH 0x1000
PUSH dword ptr [ESP + 0x48]
CALL 0x000334e0
ADD ESP,0x10
CMP dword ptr [ESP + 0x40],0x2
JNZ 0x001244d5
LEA EAX,[EBX + 0xffee71b8]
PUSH EDI
PUSH dword ptr [ESP + 0x64]
PUSH EAX
LEA EAX,[ESP + 0x94]
PUSH EAX
CALL 0x00032140
ADD ESP,0x10
JMP 0x001244d5
PUSH dword ptr [ESP + 0x8]
PUSH ESI
PUSH dword ptr [ESP + 0x90]
PUSH dword ptr [ESP + 0x10]
CALL 0x00031710
ADD ESP,0x10
JMP 0x00124502
ADD EAX,0x5
JMP 0x0012435b
MOV EDI,dword ptr [ESP + 0x68]
SUB ESP,0xc
PUSH dword ptr [ESP + 0x50]
CALL 0x00032280
ADD ESP,0x10
JMP 0x00123f5a
MOV EAX,ECX
JMP 0x0012435b
XOR ECX,ECX
IMUL ECX,ECX,0x28
LEA EAX,[EBX + ECX*0x1 + 0xffee7c64]
JMP 0x00124b2d
MOV EDX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00121780
CMP EAX,dword ptr [ESP + 0x30]
JNC 0x00124aae
MOV ECX,dword ptr [ESP + 0x40]
CMP ECX,0xd
MOV ESI,ECX
JLE 0x00124c1f
MOV dword ptr [ESP + 0x40],ESI
JMP 0x00124aba
CALL 0x0029eab0
LEA EAX,[EBX + 0xffed2d8a]
PUSH ECX
JMP 0x001244c3
PUSH dword ptr [ESP + 0x24]
LEA EAX,[EBX + 0xffee71be]
JMP 0x001244c3
MOV EBP,dword ptr [ESP + 0x3c]
MOV byte ptr [ESI + ECX*0x1],0x0
JMP 0x0012446c
CMP dword ptr [ESP + 0x24],0x8825
MOV EDX,0x0
MOV EDI,0x10000
LEA EBP,[ESP + 0x8c]
CMOVNZ EDI,EDX
IMUL EDX,ECX,0xc
MOV ECX,dword ptr [ESP + 0x5c]
ADD ESI,0x1
MOV dword ptr [ESP + EDX*0x1 + 0x8c],ECX
MOV ECX,dword ptr [ESP + 0x1c]
ADD ECX,0x1
MOV dword ptr [ESP + EDX*0x1 + 0x90],ECX
MOV ECX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + EDX*0x1 + 0x94],ECX
MOV ECX,dword ptr [ESP + 0x34]
XOR EDX,EDX
ADD ECX,EAX
JMP 0x00124c76
ADD EDX,0x1
CMP ESI,EDX
JLE 0x00124c97
IMUL EAX,EDX,0xc
MOV EAX,dword ptr [EBP + EAX*0x1]
CMP EAX,ECX
JNZ 0x00124c6f
CMP ESI,EDX
JG 0x00124be9
JMP 0x00124c99
MOV EAX,ECX
IMUL ESI,ESI,0xc
MOV ECX,dword ptr [ESP + 0x5c]
MOV EBP,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + ESI*0x1 + 0x8c],EAX
ADD EDX,dword ptr [ESP + 0x30]
IMUL EAX,dword ptr [ESP + 0x50],0xc
MOV dword ptr [ESP + ESI*0x1 + 0x94],EDI
MOV dword ptr [ESP + ESI*0x1 + 0x90],0x0
LEA ESI,[EBP + 0x2]
LEA ECX,[ECX + EAX*0x1 + 0x6]
CMP ECX,EDX
JA 0x00124be9
MOV ECX,dword ptr [ESP + 0x5c]
LEA EDX,[ECX + EAX*0x1 + 0x2]
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00121780
TEST EAX,EAX
JZ 0x00124be9
CMP ESI,0xd
JG 0x00124be9
CMP EAX,dword ptr [ESP + 0x30]
JNC 0x00124be9
ADD EAX,dword ptr [ESP + 0x34]
IMUL ESI,ESI,0xc
MOV dword ptr [ESP + ESI*0x1 + 0x90],0x0
MOV dword ptr [ESP + ESI*0x1 + 0x8c],EAX
MOV dword ptr [ESP + ESI*0x1 + 0x94],EDI
MOV ESI,EBP
ADD ESI,0x3
JMP 0x00124be9
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3 FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  char cVar3;\n  uint uVar4;\n  ushort uVar5;\n  ushort uVar6;\n  int iVar7;\n  ushort **ppuVar8;\n  size_t sVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  undefined4 uVar13;\n  ushort *puVar14;\n  int iVar15;\n  ushort *puVar16;\n  uint uVar17;\n  Elf32_Ehdr *extraout_ECX;\n  char *pcVar18;\n  uint uVar19;\n  int iVar20;\n  undefined4 *puVar21;\n  ushort *puVar22;\n  Elf32_Ehdr *pEVar23;\n  uint uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  Elf32_Ehdr *local_1160;\n  int local_1158;\n  uint local_1150;\n  int local_114c;\n  Elf32_Ehdr *local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  uint local_1134;\n  int local_112c;\n  ushort *local_1110;\n  undefined4 local_1104;\n  undefined4 local_10e4;\n  uint local_10e0 [48];\n  undefined1 local_1020;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x123e2d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar7 = GetImageProfile(param_1,&DAT_002c0184);\n  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = 0;\nLAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\nLAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }\n  local_10e0[iVar7 * 3] = (uint)pcVar18;\n  local_10e0[iVar7 * 3 + 2] = uVar24;\n  local_10e0[iVar7 * 3 + 1] = 0;\n  iVar7 = local_112c + 2;\n  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar7;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)local_10e0[local_112c * 3];\n  local_1150 = local_10e0[local_112c * 3 + 1];\n  local_1134 = local_10e0[local_112c * 3 + 2];\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(uVar13);\n  goto LAB_00123f5a;\n}\n\n" comment (function_definition "undefined4 __regparm3 FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  char cVar3;\n  uint uVar4;\n  ushort uVar5;\n  ushort uVar6;\n  int iVar7;\n  ushort **ppuVar8;\n  size_t sVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  undefined4 uVar13;\n  ushort *puVar14;\n  int iVar15;\n  ushort *puVar16;\n  uint uVar17;\n  Elf32_Ehdr *extraout_ECX;\n  char *pcVar18;\n  uint uVar19;\n  int iVar20;\n  undefined4 *puVar21;\n  ushort *puVar22;\n  Elf32_Ehdr *pEVar23;\n  uint uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  Elf32_Ehdr *local_1160;\n  int local_1158;\n  uint local_1150;\n  int local_114c;\n  Elf32_Ehdr *local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  uint local_1134;\n  int local_112c;\n  ushort *local_1110;\n  undefined4 local_1104;\n  undefined4 local_10e4;\n  uint local_10e0 [48];\n  undefined1 local_1020;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x123e2d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar7 = GetImageProfile(param_1,&DAT_002c0184);\n  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = 0;\nLAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\nLAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }\n  local_10e0[iVar7 * 3] = (uint)pcVar18;\n  local_10e0[iVar7 * 3 + 2] = uVar24;\n  local_10e0[iVar7 * 3 + 1] = 0;\n  iVar7 = local_112c + 2;\n  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar7;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)local_10e0[local_112c * 3];\n  local_1150 = local_10e0[local_112c * 3 + 1];\n  local_1134 = local_10e0[local_112c * 3 + 2];\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(uVar13);\n  goto LAB_00123f5a;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)" identifier (parameter_list "(int param_1,byte *param_2,undefined4 param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  ushort *puVar1;\n  byte bVar2;\n  char cVar3;\n  uint uVar4;\n  ushort uVar5;\n  ushort uVar6;\n  int iVar7;\n  ushort **ppuVar8;\n  size_t sVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  undefined4 uVar13;\n  ushort *puVar14;\n  int iVar15;\n  ushort *puVar16;\n  uint uVar17;\n  Elf32_Ehdr *extraout_ECX;\n  char *pcVar18;\n  uint uVar19;\n  int iVar20;\n  undefined4 *puVar21;\n  ushort *puVar22;\n  Elf32_Ehdr *pEVar23;\n  uint uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  Elf32_Ehdr *local_1160;\n  int local_1158;\n  uint local_1150;\n  int local_114c;\n  Elf32_Ehdr *local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  uint local_1134;\n  int local_112c;\n  ushort *local_1110;\n  undefined4 local_1104;\n  undefined4 local_10e4;\n  uint local_10e0 [48];\n  undefined1 local_1020;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x123e2d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar7 = GetImageProfile(param_1,&DAT_002c0184);\n  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = 0;\nLAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\nLAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }\n  local_10e0[iVar7 * 3] = (uint)pcVar18;\n  local_10e0[iVar7 * 3 + 2] = uVar24;\n  local_10e0[iVar7 * 3 + 1] = 0;\n  iVar7 = local_112c + 2;\n  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar7;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)local_10e0[local_112c * 3];\n  local_1150 = local_10e0[local_112c * 3 + 1];\n  local_1134 = local_10e0[local_112c * 3 + 2];\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(uVar13);\n  goto LAB_00123f5a;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "ushort uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "ushort **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "ushort *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "ushort *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "Elf32_Ehdr *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "undefined4 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "ushort *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "Elf32_Ehdr *pEVar23;" type_identifier (pointer_declarator "*pEVar23" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar25;" primitive_type identifier ;) (declaration "Elf32_Ehdr *local_1160;" type_identifier (pointer_declarator "*local_1160" * identifier) ;) (declaration "int local_1158;" primitive_type identifier ;) (declaration "uint local_1150;" type_identifier identifier ;) (declaration "int local_114c;" primitive_type identifier ;) (declaration "Elf32_Ehdr *local_1148;" type_identifier (pointer_declarator "*local_1148" * identifier) ;) (declaration "ushort *local_1144;" type_identifier (pointer_declarator "*local_1144" * identifier) ;) (declaration "ushort *local_1140;" type_identifier (pointer_declarator "*local_1140" * identifier) ;) (declaration "uint local_1134;" type_identifier identifier ;) (declaration "int local_112c;" primitive_type identifier ;) (declaration "ushort *local_1110;" type_identifier (pointer_declarator "*local_1110" * identifier) ;) (declaration "undefined4 local_1104;" type_identifier identifier ;) (declaration "undefined4 local_10e4;" type_identifier identifier ;) (declaration "uint local_10e0 [48];" type_identifier (array_declarator "local_10e0 [48]" identifier [ number_literal ]) ;) (declaration "undefined1 local_1020;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x123e2d;" (assignment_expression "uStack_14 = 0x123e2d" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = GetImageProfile(param_1,&DAT_002c0184);" (assignment_expression "iVar7 = GetImageProfile(param_1,&DAT_002c0184)" identifier = (call_expression "GetImageProfile(param_1,&DAT_002c0184)" identifier (argument_list "(param_1,&DAT_002c0184)" ( identifier , (pointer_expression "&DAT_002c0184" & identifier) )))) ;) (if_statement "if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }" if (parenthesized_expression "(((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0))" ( (binary_expression "((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)" (parenthesized_expression "((iVar7 != 0) && (param_2 != (byte *)0x0))" ( (binary_expression "(iVar7 != 0) && (param_2 != (byte *)0x0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(bVar2 = *param_2, bVar2 != 0)" ( (comma_expression "bVar2 = *param_2, bVar2 != 0" (assignment_expression "bVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) , (binary_expression "bVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (while_statement "while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }" while (parenthesized_expression "((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" * (cast_expression "(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" ( (binary_expression "(int)*ppuVar8 + (uint)bVar2 * 2 + 1" (binary_expression "(int)*ppuVar8 + (uint)bVar2 * 2" (cast_expression "(int)*ppuVar8" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }" { (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *param_2;" (assignment_expression "bVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (expression_statement "sVar9 = strlen((char *)param_2);" (assignment_expression "sVar9 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }" if (parenthesized_expression "(5 < sVar9)" ( (binary_expression "5 < sVar9" number_literal < identifier) )) (compound_statement "{\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }" { (expression_statement "bVar2 = param_2[5];" (assignment_expression "bVar2 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (if_statement "if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" if (parenthesized_expression "(bVar2 == 0x23)" ( (binary_expression "bVar2 == 0x23" identifier == number_literal) )) (compound_statement "{\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }" { (labeled_statement "LAB_00123edc:\n        param_2 = param_2 + 6;" statement_identifier : (expression_statement "param_2 = param_2 + 6;" (assignment_expression "param_2 = param_2 + 6" identifier = (binary_expression "param_2 + 6" identifier + number_literal)) ;)) (expression_statement "sVar9 = strlen((char *)param_2);" (assignment_expression "sVar9 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }" if (parenthesized_expression "(sVar9 == 4)" ( (binary_expression "sVar9 == 4" identifier == number_literal) )) (compound_statement "{\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }" { (expression_statement "local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40)" identifier = (cast_expression "(Elf32_Ehdr *)(uint)(bVar2 == 0x40)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(bVar2 == 0x40)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 == 0x40)" ( (binary_expression "bVar2 == 0x40" identifier == number_literal) ))))) ;) (do_statement "do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);" do (compound_statement "{\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          }" { (expression_statement "iVar10 = (int)(char)*param_2;" (assignment_expression "iVar10 = (int)(char)*param_2" identifier = (cast_expression "(int)(char)*param_2" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)))) ;) (expression_statement "uVar19 = (int)local_1160 << 4;" (assignment_expression "uVar19 = (int)local_1160 << 4" identifier = (binary_expression "(int)local_1160 << 4" (cast_expression "(int)local_1160" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (if_statement "if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" if (parenthesized_expression "(iVar10 - 0x30U < 10)" ( (binary_expression "iVar10 - 0x30U < 10" (binary_expression "iVar10 - 0x30U" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }" { (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U)" identifier = (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 | iVar10 - 0x30U)" ( (binary_expression "uVar19 | iVar10 - 0x30U" identifier | (binary_expression "iVar10 - 0x30U" identifier - number_literal)) )))) ;) }) (else_clause "else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" else (if_statement "if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" if (parenthesized_expression "(iVar10 - 0x41U < 6)" ( (binary_expression "iVar10 - 0x41U < 6" (binary_expression "iVar10 - 0x41U" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }" { (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U)" identifier = (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 | iVar10 - 0x37U)" ( (binary_expression "uVar19 | iVar10 - 0x37U" identifier | (binary_expression "iVar10 - 0x37U" identifier - number_literal)) )))) ;) }) (else_clause "else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" else (compound_statement "{\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" { (if_statement "if (5 < iVar10 - 0x61U) goto LAB_00123f58;" if (parenthesized_expression "(5 < iVar10 - 0x61U)" ( (binary_expression "5 < iVar10 - 0x61U" number_literal < (binary_expression "iVar10 - 0x61U" identifier - number_literal)) )) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;)) (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U)" identifier = (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 | iVar10 - 0x57U)" ( (binary_expression "uVar19 | iVar10 - 0x57U" identifier | (binary_expression "iVar10 - 0x57U" identifier - number_literal)) )))) ;) }))))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*param_2 != 0)" ( (binary_expression "*param_2 != 0" (pointer_expression "*param_2" * identifier) != number_literal) )) ;) (labeled_statement "LAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" statement_identifier : (if_statement "if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" if (parenthesized_expression "(local_1160 != (Elf32_Ehdr *)0xffffffff)" ( (binary_expression "local_1160 != (Elf32_Ehdr *)0xffffffff" identifier != (cast_expression "(Elf32_Ehdr *)0xffffffff" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" { (expression_statement "local_1158 = 0;" (assignment_expression "local_1158 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00123f38;" goto statement_identifier ;) }))) })) }) (else_clause "else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" else (compound_statement "{\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" { (if_statement "if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" if (parenthesized_expression "((char)bVar2 < '$')" ( (binary_expression "(char)bVar2 < '$'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'$'" ' character ')) )) (compound_statement "{\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }" { (expression_statement "local_1158 = 2;" (assignment_expression "local_1158 = 2" identifier = number_literal) ;) (expression_statement "local_1160 = (Elf32_Ehdr *)0x0;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x0" identifier = (cast_expression "(Elf32_Ehdr *)0x0" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }" if (parenthesized_expression "(bVar2 != 0x21)" ( (binary_expression "bVar2 != 0x21" identifier != number_literal) )) (compound_statement "{\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }" { (labeled_statement "LAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;" statement_identifier : (expression_statement "local_1160 = (Elf32_Ehdr *)0x1;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x1" identifier = (cast_expression "(Elf32_Ehdr *)0x1" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar18 = "exif:InteroperabilityIndex";" (assignment_expression "pcVar18 = "exif:InteroperabilityIndex"" identifier = (string_literal ""exif:InteroperabilityIndex"" " string_content ")) ;) (do_statement "do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);" do (compound_statement "{\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            }" { (expression_statement "iVar10 = LocaleCompare(pcVar18,param_2);" (assignment_expression "iVar10 = LocaleCompare(pcVar18,param_2)" identifier = (call_expression "LocaleCompare(pcVar18,param_2)" identifier (argument_list "(pcVar18,param_2)" ( identifier , identifier )))) ;) (if_statement "if (iVar10 == 0) goto LAB_00123f24;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00123f24;" goto statement_identifier ;)) (expression_statement "local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);" (assignment_expression "local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24)" identifier = (pointer_expression "*(Elf32_Ehdr **)(pcVar18 + 0x24)" * (cast_expression "(Elf32_Ehdr **)(pcVar18 + 0x24)" ( (type_descriptor "Elf32_Ehdr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x24)" ( (binary_expression "pcVar18 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = pcVar18 + 0x28;" (assignment_expression "pcVar18 = pcVar18 + 0x28" identifier = (binary_expression "pcVar18 + 0x28" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_1160 != (Elf32_Ehdr *)0x0)" ( (binary_expression "local_1160 != (Elf32_Ehdr *)0x0" identifier != (cast_expression "(Elf32_Ehdr *)0x0" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;) })) }) (else_clause "else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" else (compound_statement "{\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" { (if_statement "if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }" if (parenthesized_expression "(bVar2 != 0x2a)" ( (binary_expression "bVar2 != 0x2a" identifier != number_literal) )) (compound_statement "{\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }" { (if_statement "if (bVar2 != 0x40) goto LAB_00123f95;" if (parenthesized_expression "(bVar2 != 0x40)" ( (binary_expression "bVar2 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_00123f95;" goto statement_identifier ;)) (goto_statement "goto LAB_00123edc;" goto statement_identifier ;) })) (expression_statement "local_1158 = 1;" (assignment_expression "local_1158 = 1" identifier = number_literal) ;) (expression_statement "local_1160 = (Elf32_Ehdr *)0x0;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x0" identifier = (cast_expression "(Elf32_Ehdr *)0x0" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);" statement_identifier : (expression_statement "uVar19 = GetStringInfoLength(iVar7);" (assignment_expression "uVar19 = GetStringInfoLength(iVar7)" identifier = (call_expression "GetStringInfoLength(iVar7)" identifier (argument_list "(iVar7)" ( identifier )))) ;)) (if_statement "if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }" if (parenthesized_expression "(5 < uVar19)" ( (binary_expression "5 < uVar19" number_literal < identifier) )) (compound_statement "{\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }" { (expression_statement "puVar11 = (ushort *)GetStringInfoDatum(iVar7);" (assignment_expression "puVar11 = (ushort *)GetStringInfoDatum(iVar7)" identifier = (cast_expression "(ushort *)GetStringInfoDatum(iVar7)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetStringInfoDatum(iVar7)" identifier (argument_list "(iVar7)" ( identifier ))))) ;) (do_statement "do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);" do (compound_statement "{\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          }" { (expression_statement "cVar3 = (char)*puVar11;" (assignment_expression "cVar3 = (char)*puVar11" identifier = (cast_expression "(char)*puVar11" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "puVar16 = puVar11;" (assignment_expression "puVar16 = puVar11" identifier = identifier) ;) (expression_statement "uVar4 = uVar19;" (assignment_expression "uVar4 = uVar19" identifier = identifier) ;) (while_statement "while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }" while (parenthesized_expression "(uVar19 = uVar4 - 1, cVar3 != 'E')" ( (comma_expression "uVar19 = uVar4 - 1, cVar3 != 'E'" (assignment_expression "uVar19 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) , (binary_expression "cVar3 != 'E'" identifier != (char_literal "'E'" ' character '))) )) (compound_statement "{\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }" { (if_statement "if (uVar19 == 0) goto LAB_00123f58;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;)) (expression_statement "puVar16 = (ushort *)((int)puVar16 + 1);" (assignment_expression "puVar16 = (ushort *)((int)puVar16 + 1)" identifier = (cast_expression "(ushort *)((int)puVar16 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 1)" ( (binary_expression "(int)puVar16 + 1" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar4 = uVar19;" (assignment_expression "uVar4 = uVar19" identifier = identifier) ;) (expression_statement "cVar3 = *(char *)puVar16;" (assignment_expression "cVar3 = *(char *)puVar16" identifier = (pointer_expression "*(char *)puVar16" * (cast_expression "(char *)puVar16" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar4 - 2;" (assignment_expression "uVar19 = uVar4 - 2" identifier = (binary_expression "uVar4 - 2" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }" if (parenthesized_expression "(*(char *)((int)puVar16 + 1) == 'x')" ( (binary_expression "*(char *)((int)puVar16 + 1) == 'x'" (pointer_expression "*(char *)((int)puVar16 + 1)" * (cast_expression "(char *)((int)puVar16 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 1)" ( (binary_expression "(int)puVar16 + 1" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'x'" ' character ')) )) (compound_statement "{\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar4 - 3;" (assignment_expression "uVar19 = uVar4 - 3" identifier = (binary_expression "uVar4 - 3" identifier - number_literal)) ;) (if_statement "if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" if (parenthesized_expression "((char)puVar16[1] == 'i')" ( (binary_expression "(char)puVar16[1] == 'i'" (cast_expression "(char)puVar16[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar16[1]" identifier [ number_literal ])) == (char_literal "'i'" ' character ')) )) (compound_statement "{\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar4 - 4;" (assignment_expression "uVar19 = uVar4 - 4" identifier = (binary_expression "uVar4 - 4" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }" if (parenthesized_expression "(*(char *)((int)puVar16 + 3) == 'f')" ( (binary_expression "*(char *)((int)puVar16 + 3) == 'f'" (pointer_expression "*(char *)((int)puVar16 + 3)" * (cast_expression "(char *)((int)puVar16 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 3)" ( (binary_expression "(int)puVar16 + 3" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'f'" ' character ')) )) (compound_statement "{\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar4 - 5;" (assignment_expression "uVar19 = uVar4 - 5" identifier = (binary_expression "uVar4 - 5" identifier - number_literal)) ;) (if_statement "if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" if (parenthesized_expression "((char)puVar16[2] == '\0')" ( (binary_expression "(char)puVar16[2] == '\0'" (cast_expression "(char)puVar16[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar16[2]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = puVar16 + 3;" (assignment_expression "puVar11 = puVar16 + 3" identifier = (binary_expression "puVar16 + 3" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar4 - 6;" (assignment_expression "uVar19 = uVar4 - 6" identifier = (binary_expression "uVar4 - 6" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }" if (parenthesized_expression "(*(char *)((int)puVar16 + 5) == '\0')" ( (binary_expression "*(char *)((int)puVar16 + 5) == '\0'" (pointer_expression "*(char *)((int)puVar16 + 5)" * (cast_expression "(char *)((int)puVar16 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 5)" ( (binary_expression "(int)puVar16 + 5" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }" { (if_statement "if (uVar19 < 0x10) break;" if (parenthesized_expression "(uVar19 < 0x10)" ( (binary_expression "uVar19 < 0x10" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" if (parenthesized_expression "(puVar16[3] == 0x4949)" ( (binary_expression "puVar16[3] == 0x4949" (subscript_expression "puVar16[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }" { (if_statement "if (puVar16[4] != 0x2a) break;" if (parenthesized_expression "(puVar16[4] != 0x2a)" ( (binary_expression "puVar16[4] != 0x2a" (subscript_expression "puVar16[4]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = *(uint *)(puVar16 + 5);" (assignment_expression "uVar12 = *(uint *)(puVar16 + 5)" identifier = (pointer_expression "*(uint *)(puVar16 + 5)" * (cast_expression "(uint *)(puVar16 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 5)" ( (binary_expression "puVar16 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_114c = 1;" (assignment_expression "local_114c = 1" identifier = number_literal) ;) }) (else_clause "else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" else (compound_statement "{\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" { (if_statement "if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;" if (parenthesized_expression "((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00))" ( (binary_expression "(puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)" (parenthesized_expression "(puVar16[3] != 0x4d4d)" ( (binary_expression "puVar16[3] != 0x4d4d" (subscript_expression "puVar16[3]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(puVar16[4] != 0x2a00)" ( (binary_expression "puVar16[4] != 0x2a00" (subscript_expression "puVar16[4]" identifier [ number_literal ]) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = *(uint *)(puVar16 + 5);" (assignment_expression "uVar12 = *(uint *)(puVar16 + 5)" identifier = (pointer_expression "*(uint *)(puVar16 + 5)" * (cast_expression "(uint *)(puVar16 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 5)" ( (binary_expression "puVar16 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_114c = 2;" (assignment_expression "local_114c = 2" identifier = number_literal) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) }))) (if_statement "if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }" if (parenthesized_expression "((-1 < (int)uVar12) && (uVar12 < uVar19))" ( (binary_expression "(-1 < (int)uVar12) && (uVar12 < uVar19)" (parenthesized_expression "(-1 < (int)uVar12)" ( (binary_expression "-1 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar12 < uVar19)" ( (binary_expression "uVar12 < uVar19" identifier < identifier) ))) )) (compound_statement "{\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }" { (expression_statement "local_1110 = (ushort *)(uVar12 + (int)puVar11);" (assignment_expression "local_1110 = (ushort *)(uVar12 + (int)puVar11)" identifier = (cast_expression "(ushort *)(uVar12 + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar12 + (int)puVar11)" ( (binary_expression "uVar12 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar13 = NewSplayTree(0,0,0,local_1110);" (assignment_expression "uVar13 = NewSplayTree(0,0,0,local_1110)" identifier = (call_expression "NewSplayTree(0,0,0,local_1110)" identifier (argument_list "(0,0,0,local_1110)" ( number_literal , number_literal , number_literal , identifier )))) ;) (expression_statement "local_1134 = 0;" (assignment_expression "local_1134 = 0" identifier = number_literal) ;) (expression_statement "local_112c = 0;" (assignment_expression "local_112c = 0" identifier = number_literal) ;) (expression_statement "local_1150 = 0;" (assignment_expression "local_1150 = 0" identifier = number_literal) ;) (expression_statement "local_1104 = 0;" (assignment_expression "local_1104 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00124153;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) }) (else_clause "else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" else (compound_statement "{\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" { (expression_statement "puVar11 = (ushort *)((int)puVar16 + 5);" (assignment_expression "puVar11 = (ushort *)((int)puVar16 + 5)" identifier = (cast_expression "(ushort *)((int)puVar16 + 5)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 5)" ( (binary_expression "(int)puVar16 + 5" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) }) (else_clause "else {\n                  puVar11 = puVar16 + 2;\n                }" else (compound_statement "{\n                  puVar11 = puVar16 + 2;\n                }" { (expression_statement "puVar11 = puVar16 + 2;" (assignment_expression "puVar11 = puVar16 + 2" identifier = (binary_expression "puVar16 + 2" identifier + number_literal)) ;) }))) }) (else_clause "else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" else (compound_statement "{\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" { (expression_statement "puVar11 = (ushort *)((int)puVar16 + 3);" (assignment_expression "puVar11 = (ushort *)((int)puVar16 + 3)" identifier = (cast_expression "(ushort *)((int)puVar16 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 3)" ( (binary_expression "(int)puVar16 + 3" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) }) (else_clause "else {\n              puVar11 = puVar16 + 1;\n            }" else (compound_statement "{\n              puVar11 = puVar16 + 1;\n            }" { (expression_statement "puVar11 = puVar16 + 1;" (assignment_expression "puVar11 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) ;) })) }))) })) })) (labeled_statement "LAB_00123f58:\n  local_1104 = 0;" statement_identifier : (expression_statement "local_1104 = 0;" (assignment_expression "local_1104 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_1104;\n  }" { (return_statement "return local_1104;" return identifier ;) }))) comment (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" statement_identifier : (if_statement "if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" if (parenthesized_expression "((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2))))" ( (binary_expression "(puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))" (parenthesized_expression "(puVar11 <= local_1110)" ( (binary_expression "puVar11 <= local_1110" identifier <= identifier) )) && (parenthesized_expression "(local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))" ( (binary_expression "local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2))" identifier <= (cast_expression "(ushort *)((int)puVar16 + (uVar4 - 2))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + (uVar4 - 2))" ( (binary_expression "(int)puVar16 + (uVar4 - 2)" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 - 2)" ( (binary_expression "uVar4 - 2" identifier - number_literal) ))) )))) ))) )) (compound_statement "{\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" { (expression_statement "uVar6 = *local_1110;" (assignment_expression "uVar6 = *local_1110" identifier = (pointer_expression "*local_1110" * identifier)) ;) (if_statement "if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }" if (parenthesized_expression "(local_114c != 1)" ( (binary_expression "local_114c != 1" identifier != number_literal) )) (compound_statement "{\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }" { (expression_statement "uVar6 = uVar6 << 8 | uVar6 >> 8;" (assignment_expression "uVar6 = uVar6 << 8 | uVar6 >> 8" identifier = (binary_expression "uVar6 << 8 | uVar6 >> 8" (binary_expression "uVar6 << 8" identifier << number_literal) | (binary_expression "uVar6 >> 8" identifier >> number_literal))) ;) })) (expression_statement "uVar12 = (uint)uVar6;" (assignment_expression "uVar12 = (uint)uVar6" identifier = (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar7 = local_112c;" (assignment_expression "iVar7 = local_112c" identifier = identifier) ;) (if_statement "if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }" if (parenthesized_expression "(local_1150 < uVar12)" ( (binary_expression "local_1150 < uVar12" identifier < identifier) )) (compound_statement "{\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }" { (expression_statement "puVar22 = local_1110 + local_1150 * 6 + 1;" (assignment_expression "puVar22 = local_1110 + local_1150 * 6 + 1" identifier = (binary_expression "local_1110 + local_1150 * 6 + 1" (binary_expression "local_1110 + local_1150 * 6" identifier + (binary_expression "local_1150 * 6" identifier * number_literal)) + number_literal)) ;) (expression_statement "puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));" (assignment_expression "puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc))" identifier = (cast_expression "(ushort *)((int)puVar16 + (uVar4 - 0xc))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + (uVar4 - 0xc))" ( (binary_expression "(int)puVar16 + (uVar4 - 0xc)" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 - 0xc)" ( (binary_expression "uVar4 - 0xc" identifier - number_literal) ))) )))) ;) (if_statement "if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }" if (parenthesized_expression "(puVar22 <= puVar1)" ( (binary_expression "puVar22 <= puVar1" identifier <= identifier) )) (compound_statement "{\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }" { (expression_statement "iVar10 = local_1150 * 0xc - (int)puVar22;" (assignment_expression "iVar10 = local_1150 * 0xc - (int)puVar22" identifier = (binary_expression "local_1150 * 0xc - (int)puVar22" (binary_expression "local_1150 * 0xc" identifier * number_literal) - (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_1144 = local_1110 + local_1150 * 6 + 7;" (assignment_expression "local_1144 = local_1110 + local_1150 * 6 + 7" identifier = (binary_expression "local_1110 + local_1150 * 6 + 7" (binary_expression "local_1110 + local_1150 * 6" identifier + (binary_expression "local_1150 * 6" identifier * number_literal)) + number_literal)) ;) (do_statement "do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);" do (compound_statement "{\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        }" { (expression_statement "puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);" (assignment_expression "puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22)" identifier = (cast_expression "(ushort *)GetValueFromSplayTree(uVar13,puVar22)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetValueFromSplayTree(uVar13,puVar22)" identifier (argument_list "(uVar13,puVar22)" ( identifier , identifier ))))) ;) (if_statement "if (puVar14 == puVar22) break;" if (parenthesized_expression "(puVar14 == puVar22)" ( (binary_expression "puVar14 == puVar22" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "AddValueToSplayTree(uVar13,puVar22,puVar22);" (call_expression "AddValueToSplayTree(uVar13,puVar22,puVar22)" identifier (argument_list "(uVar13,puVar22,puVar22)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" if (parenthesized_expression "(local_114c == 1)" ( (binary_expression "local_114c == 1" identifier == number_literal) )) (compound_statement "{\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }" { (expression_statement "uVar6 = puVar22[1];" (assignment_expression "uVar6 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *puVar22;" (assignment_expression "uVar5 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (if_statement "if (0xb < (ushort)(uVar6 - 1)) break;" if (parenthesized_expression "(0xb < (ushort)(uVar6 - 1))" ( (binary_expression "0xb < (ushort)(uVar6 - 1)" number_literal < (call_expression "(ushort)(uVar6 - 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);" (assignment_expression "pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2)" identifier = (pointer_expression "*(Elf32_Ehdr **)(puVar22 + 2)" * (cast_expression "(Elf32_Ehdr **)(puVar22 + 2)" ( (type_descriptor "Elf32_Ehdr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 2)" ( (binary_expression "puVar22 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" else (compound_statement "{\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" { (expression_statement "uVar5 = *puVar22 << 8 | *puVar22 >> 8;" (assignment_expression "uVar5 = *puVar22 << 8 | *puVar22 >> 8" identifier = (binary_expression "*puVar22 << 8 | *puVar22 >> 8" (binary_expression "*puVar22 << 8" (pointer_expression "*puVar22" * identifier) << number_literal) | (binary_expression "*puVar22 >> 8" (pointer_expression "*puVar22" * identifier) >> number_literal))) ;) (expression_statement "uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;" (assignment_expression "uVar6 = puVar22[1] << 8 | puVar22[1] >> 8" identifier = (binary_expression "puVar22[1] << 8 | puVar22[1] >> 8" (binary_expression "puVar22[1] << 8" (subscript_expression "puVar22[1]" identifier [ number_literal ]) << number_literal) | (binary_expression "puVar22[1] >> 8" (subscript_expression "puVar22[1]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (0xb < (ushort)(uVar6 - 1)) break;" if (parenthesized_expression "(0xb < (ushort)(uVar6 - 1))" ( (binary_expression "0xb < (ushort)(uVar6 - 1)" number_literal < (call_expression "(ushort)(uVar6 - 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "uVar17 = *(uint *)(puVar22 + 2);" (assignment_expression "uVar17 = *(uint *)(puVar22 + 2)" identifier = (pointer_expression "*(uint *)(puVar22 + 2)" * (cast_expression "(uint *)(puVar22 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 2)" ( (binary_expression "puVar22 + 2" identifier + number_literal) ))))) ;) (expression_statement "pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);" (assignment_expression "pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" identifier = (cast_expression "(Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" ( (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal)) )))) ;) }))) (expression_statement "local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);" (assignment_expression "local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134)" identifier = (cast_expression "(Elf32_Ehdr *)(uVar5 + local_1134)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + local_1134)" ( (binary_expression "uVar5 + local_1134" identifier + identifier) )))) ;) (if_statement "if ((int)pEVar23 < 0) break;" if (parenthesized_expression "((int)pEVar23 < 0)" ( (binary_expression "(int)pEVar23 < 0" (cast_expression "(int)pEVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;" (assignment_expression "uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23" identifier = (binary_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23" (pointer_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" * (cast_expression "(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002c0c20 + (uint)uVar6 * 4)" ( (binary_expression "&DAT_002c0c20 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c0c20" & identifier) + (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) * (cast_expression "(int)pEVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar17 < (int)pEVar23) break;" if (parenthesized_expression "((int)uVar17 < (int)pEVar23)" ( (binary_expression "(int)uVar17 < (int)pEVar23" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pEVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" if (parenthesized_expression "((int)uVar17 < 5)" ( (binary_expression "(int)uVar17 < 5" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }" { (expression_statement "local_1140 = puVar22 + 4;" (assignment_expression "local_1140 = puVar22 + 4" identifier = (binary_expression "puVar22 + 4" identifier + number_literal)) ;) (labeled_statement "LAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" statement_identifier : (if_statement "if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" if (parenthesized_expression "((local_1158 != 0) || (local_1160 == local_1148))" ( (binary_expression "(local_1158 != 0) || (local_1160 == local_1148)" (parenthesized_expression "(local_1158 != 0)" ( (binary_expression "local_1158 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_1160 == local_1148)" ( (binary_expression "local_1160 == local_1148" identifier == identifier) ))) )) (compound_statement "{\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" { (if_statement "if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;" if (parenthesized_expression "((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140))" ( (binary_expression "(local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)" (parenthesized_expression "(local_1140 < puVar11)" ( (binary_expression "local_1140 < puVar11" identifier < identifier) )) || (parenthesized_expression "((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)" ( (binary_expression "(ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140" (cast_expression "(ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11)" ( (binary_expression "(uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11" (parenthesized_expression "(uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4))" ( (binary_expression "uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" identifier - (pointer_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" * (cast_expression "(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002c0c20 + (uint)uVar6 * 4)" ( (binary_expression "&DAT_002c0c20 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c0c20" & identifier) + (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) )) + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "local_1020 = 0;" (assignment_expression "local_1020 = 0" identifier = number_literal) ;) (if_statement "if (uVar6 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }" if (parenthesized_expression "(uVar6 < 0xd)" ( (binary_expression "uVar6 < 0xd" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }" { comment comment (expression_statement "uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();" (assignment_expression "uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ()" identifier = (call_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ()" (parenthesized_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))" ( (pointer_expression "*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" * (cast_expression "(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" ( (binary_expression "(int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" (cast_expression "(int)&__DT_PLTGOT" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__DT_PLTGOT" & identifier)) + (pointer_expression "*(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" * (cast_expression "(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002c05b8 + (uint)uVar6 * 4)" ( (binary_expression "&DAT_002c05b8 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c05b8" & identifier) + (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar13;" return identifier ;) })) (expression_statement "puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);" (assignment_expression "puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11)" identifier = (cast_expression "(ushort *)((uVar19 - uVar17) + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar19 - uVar17) + (int)puVar11)" ( (binary_expression "(uVar19 - uVar17) + (int)puVar11" (parenthesized_expression "(uVar19 - uVar17)" ( (binary_expression "uVar19 - uVar17" identifier - identifier) )) + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }" if (parenthesized_expression "(local_1140 <= puVar14)" ( (binary_expression "local_1140 <= puVar14" identifier <= identifier) )) (compound_statement "{\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }" { (expression_statement "iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);" (assignment_expression "iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14)" identifier = (call_expression "AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14)" identifier (argument_list "(uVar17 + 1,1,puVar14,puVar14)" ( (binary_expression "uVar17 + 1" identifier + number_literal) , number_literal , identifier , identifier )))) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (if_statement "if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }" { (for_statement "for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }" for ( ; (binary_expression "iVar20 < (int)uVar17" identifier < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ) (compound_statement "{\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }" { (expression_statement "*(undefined1 *)(iVar15 + iVar20) = 0x2e;" (assignment_expression "*(undefined1 *)(iVar15 + iVar20) = 0x2e" (pointer_expression "*(undefined1 *)(iVar15 + iVar20)" * (cast_expression "(undefined1 *)(iVar15 + iVar20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar20)" ( (binary_expression "iVar15 + iVar20" identifier + identifier) )))) = number_literal) ;) (expression_statement "bVar2 = *(byte *)((int)local_1140 + iVar20);" (assignment_expression "bVar2 = *(byte *)((int)local_1140 + iVar20)" identifier = (pointer_expression "*(byte *)((int)local_1140 + iVar20)" * (cast_expression "(byte *)((int)local_1140 + iVar20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_1140 + iVar20)" ( (binary_expression "(int)local_1140 + iVar20" (cast_expression "(int)local_1140" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "pEVar23 = (Elf32_Ehdr *)*ppuVar8;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)*ppuVar8" identifier = (cast_expression "(Elf32_Ehdr *)*ppuVar8" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppuVar8" * identifier))) ;) (if_statement "if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }" if (parenthesized_expression "(((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       )" ( (binary_expression "((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)" (parenthesized_expression "((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0)" ( (binary_expression "(pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0" (parenthesized_expression "(pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U)" ( (binary_expression "pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U" (subscript_expression "pEVar23->e_ident_magic_str[(uint)bVar2 * 2]" (field_expression "pEVar23->e_ident_magic_str" identifier -> field_identifier) [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) != number_literal) )) || (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }" { (expression_statement "*(byte *)(iVar15 + iVar20) = bVar2;" (assignment_expression "*(byte *)(iVar15 + iVar20) = bVar2" (pointer_expression "*(byte *)(iVar15 + iVar20)" * (cast_expression "(byte *)(iVar15 + iVar20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar20)" ( (binary_expression "iVar15 + iVar20" identifier + identifier) )))) = identifier) ;) })) })) (expression_statement "*(undefined1 *)(iVar15 + uVar17) = 0;" (assignment_expression "*(undefined1 *)(iVar15 + uVar17) = 0" (pointer_expression "*(undefined1 *)(iVar15 + uVar17)" * (cast_expression "(undefined1 *)(iVar15 + uVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar17)" ( (binary_expression "iVar15 + uVar17" identifier + identifier) )))) = number_literal) ;) (expression_statement "local_10e4 = AcquireString(param_2);" (assignment_expression "local_10e4 = AcquireString(param_2)" identifier = (call_expression "AcquireString(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" if (parenthesized_expression "(local_1158 == 1)" ( (binary_expression "local_1158 == 1" identifier == number_literal) )) (compound_statement "{\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }" { (if_statement "if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" if (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x1)" ( (binary_expression "local_1148 == (Elf32_Ehdr *)0x1" identifier == (cast_expression "(Elf32_Ehdr *)0x1" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;" statement_identifier : (expression_statement "pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;" (assignment_expression "pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28" identifier = (binary_expression ""exif:InteroperabilityIndex" + iVar20 * 0x28" (string_literal ""exif:InteroperabilityIndex"" " string_content ") + (binary_expression "iVar20 * 0x28" identifier * number_literal))) ;)) }) (else_clause "else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" else (compound_statement "{\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "pEVar23 = (Elf32_Ehdr *)0x2;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)0x2" identifier = (cast_expression "(Elf32_Ehdr *)0x2" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar21 = &DAT_002c0cb0;" (assignment_expression "puVar21 = &DAT_002c0cb0" identifier = (pointer_expression "&DAT_002c0cb0" & identifier)) ;) (while_statement "while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }" while (parenthesized_expression "(iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0)" ( (comma_expression "iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) , (binary_expression "pEVar23 != (Elf32_Ehdr *)0x0" identifier != (cast_expression "(Elf32_Ehdr *)0x0" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }" { (if_statement "if (pEVar23 == local_1148) goto LAB_00124bb8;" if (parenthesized_expression "(pEVar23 == local_1148)" ( (binary_expression "pEVar23 == local_1148" identifier == identifier) )) (goto_statement "goto LAB_00124bb8;" goto statement_identifier ;)) (expression_statement "pEVar23 = (Elf32_Ehdr *)*puVar21;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)*puVar21" identifier = (cast_expression "(Elf32_Ehdr *)*puVar21" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar21" * identifier))) ;) (expression_statement "puVar21 = puVar21 + 10;" (assignment_expression "puVar21 = puVar21 + 10" identifier = (binary_expression "puVar21 + 10" identifier + number_literal)) ;) })) (expression_statement "pcVar18 = "unknown";" (assignment_expression "pcVar18 = "unknown"" identifier = (string_literal ""unknown"" " string_content ")) ;) }))) (expression_statement "FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);" (call_expression "FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18)" identifier (argument_list "(local_10e4,0x1000,&DAT_002b6e4e,pcVar18)" ( identifier , number_literal , (pointer_expression "&DAT_002b6e4e" & identifier) , identifier ))) ;) (expression_statement "pEVar23 = local_1148;" (assignment_expression "pEVar23 = local_1148" identifier = identifier) ;) (labeled_statement "LAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" statement_identifier : (if_statement "if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" if (parenthesized_expression "(local_112c == 2)" ( (binary_expression "local_112c == 2" identifier == number_literal) )) (compound_statement "{\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" { (expression_statement "SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);" (call_expression "SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23)" identifier (argument_list "(&local_10e4,"exif:","exif:thumbnail:",pEVar23)" ( (pointer_expression "&local_10e4" & identifier) , (string_literal ""exif:"" " string_content ") , (string_literal ""exif:thumbnail:"" " string_content ") , identifier ))) ;) }))) }) (else_clause "else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" else (compound_statement "{\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" { (if_statement "if (local_1158 != 2) goto LAB_00124b46;" if (parenthesized_expression "(local_1158 != 2)" ( (binary_expression "local_1158 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00124b46;" goto statement_identifier ;)) (if_statement "if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" if (parenthesized_expression "(local_1148 < &Elf32_Ehdr_00010000)" ( (binary_expression "local_1148 < &Elf32_Ehdr_00010000" identifier < (pointer_expression "&Elf32_Ehdr_00010000" & identifier)) )) (compound_statement "{\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }" { (expression_statement "pcVar18 = "#%04lx";" (assignment_expression "pcVar18 = "#%04lx"" identifier = (string_literal ""#%04lx"" " string_content ")) ;) (expression_statement "pEVar23 = local_1148;" (assignment_expression "pEVar23 = local_1148" identifier = identifier) ;) }) (else_clause "else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" else (if_statement "if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" if (parenthesized_expression "((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148)" ( (binary_expression "(Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148" (cast_expression "(Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__DT_REL[0x26c].r_offset + 3)" ( (binary_expression "(int)&__DT_REL[0x26c].r_offset + 3" (cast_expression "(int)&__DT_REL[0x26c].r_offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__DT_REL[0x26c].r_offset" & (field_expression "__DT_REL[0x26c].r_offset" (subscript_expression "__DT_REL[0x26c]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))) < identifier) )) (compound_statement "{\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }" { (expression_statement "pcVar18 = "unknown";" (assignment_expression "pcVar18 = "unknown"" identifier = (string_literal ""unknown"" " string_content ")) ;) (expression_statement "pEVar23 = extraout_ECX;" (assignment_expression "pEVar23 = extraout_ECX" identifier = identifier) ;) }) (else_clause "else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" else (compound_statement "{\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" { (expression_statement "pcVar18 = "@%04lx";" (assignment_expression "pcVar18 = "@%04lx"" identifier = (string_literal ""@%04lx"" " string_content ")) ;) (expression_statement "pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);" (assignment_expression "pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff)" identifier = (cast_expression "(Elf32_Ehdr *)((uint)local_1148 & 0xffff)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_1148 & 0xffff)" ( (binary_expression "(uint)local_1148 & 0xffff" (cast_expression "(uint)local_1148" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) }))))) (expression_statement "FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);" (call_expression "FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23)" identifier (argument_list "(local_10e4,0x1000,pcVar18,pEVar23)" ( identifier , number_literal , identifier , identifier ))) ;) }))) (if_statement "if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }" if (parenthesized_expression "((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0))" ( (binary_expression "(*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)" (parenthesized_expression "(*(int *)(param_1 + 0x310) == 0)" ( (binary_expression "*(int *)(param_1 + 0x310) == 0" (pointer_expression "*(int *)(param_1 + 0x310)" * (cast_expression "(int *)(param_1 + 0x310)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x310)" ( (binary_expression "param_1 + 0x310" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)" ( (comma_expression "iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0" (assignment_expression "iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4)" identifier = (call_expression "GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4)" identifier (argument_list "(*(int *)(param_1 + 0x310),local_10e4)" ( (pointer_expression "*(int *)(param_1 + 0x310)" * (cast_expression "(int *)(param_1 + 0x310)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x310)" ( (binary_expression "param_1 + 0x310" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar20 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }" { (expression_statement "SetImageProperty(param_1,local_10e4,iVar15,param_3);" (call_expression "SetImageProperty(param_1,local_10e4,iVar15,param_3)" identifier (argument_list "(param_1,local_10e4,iVar15,param_3)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "DestroyString(iVar15);" (call_expression "DestroyString(iVar15)" identifier (argument_list "(iVar15)" ( identifier ))) ;) (expression_statement "DestroyString(local_10e4);" (call_expression "DestroyString(local_10e4)" identifier (argument_list "(local_10e4)" ( identifier ))) ;) (expression_statement "local_1104 = 1;" (assignment_expression "local_1104 = 1" identifier = number_literal) ;) })) })) }))) (if_statement "if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }" if (parenthesized_expression "(((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825))" ( (binary_expression "((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)" (parenthesized_expression "((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005))" ( (binary_expression "(local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)" (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x8769)" ( (binary_expression "local_1148 == (Elf32_Ehdr *)0x8769" identifier == (cast_expression "(Elf32_Ehdr *)0x8769" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0xa005)" ( (binary_expression "local_1148 == (Elf32_Ehdr *)0xa005" identifier == (cast_expression "(Elf32_Ehdr *)0xa005" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x8825)" ( (binary_expression "local_1148 == (Elf32_Ehdr *)0x8825" identifier == (cast_expression "(Elf32_Ehdr *)0x8825" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }" { (expression_statement "uVar17 = FUN_00121780();" (assignment_expression "uVar17 = FUN_00121780()" identifier = (call_expression "FUN_00121780()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }" if (parenthesized_expression "(uVar17 < uVar19)" ( (binary_expression "uVar17 < uVar19" identifier < identifier) )) (compound_statement "{\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }" { (if_statement "if (0xd < local_112c) goto LAB_00124aba;" if (parenthesized_expression "(0xd < local_112c)" ( (binary_expression "0xd < local_112c" number_literal < identifier) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) (expression_statement "uVar24 = 0x10000;" (assignment_expression "uVar24 = 0x10000" identifier = number_literal) ;) (if_statement "if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }" if (parenthesized_expression "(local_1148 != (Elf32_Ehdr *)0x8825)" ( (binary_expression "local_1148 != (Elf32_Ehdr *)0x8825" identifier != (cast_expression "(Elf32_Ehdr *)0x8825" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  uVar24 = 0;\n                }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) })) (expression_statement "iVar7 = local_112c + 1;" (assignment_expression "iVar7 = local_112c + 1" identifier = (binary_expression "local_112c + 1" identifier + number_literal)) ;) (expression_statement "local_10e0[local_112c * 3] = (uint)local_1110;" (assignment_expression "local_10e0[local_112c * 3] = (uint)local_1110" (subscript_expression "local_10e0[local_112c * 3]" identifier [ (binary_expression "local_112c * 3" identifier * number_literal) ]) = (cast_expression "(uint)local_1110" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_10e0[local_112c * 3 + 1] = local_1150 + 1;" (assignment_expression "local_10e0[local_112c * 3 + 1] = local_1150 + 1" (subscript_expression "local_10e0[local_112c * 3 + 1]" identifier [ (binary_expression "local_112c * 3 + 1" (binary_expression "local_112c * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "local_1150 + 1" identifier + number_literal)) ;) (expression_statement "local_10e0[local_112c * 3 + 2] = local_1134;" (assignment_expression "local_10e0[local_112c * 3 + 2] = local_1134" (subscript_expression "local_10e0[local_112c * 3 + 2]" identifier [ (binary_expression "local_112c * 3 + 2" (binary_expression "local_112c * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "pcVar18 = (char *)((int)puVar11 + uVar17);" (assignment_expression "pcVar18 = (char *)((int)puVar11 + uVar17)" identifier = (cast_expression "(char *)((int)puVar11 + uVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + uVar17)" ( (binary_expression "(int)puVar11 + uVar17" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (goto_statement "goto LAB_00124c76;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) }) (else_clause "else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" else (compound_statement "{\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" { (expression_statement "uVar24 = *(uint *)(puVar22 + 4);" (assignment_expression "uVar24 = *(uint *)(puVar22 + 4)" identifier = (pointer_expression "*(uint *)(puVar22 + 4)" * (cast_expression "(uint *)(puVar22 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 4)" ( (binary_expression "puVar22 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;" (assignment_expression "uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18" identifier = (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18" (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8" (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8" (binary_expression "uVar24 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar24 & 0xff0000) >> 8" (parenthesized_expression "(uVar24 & 0xff0000)" ( (binary_expression "uVar24 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar24 & 0xff00) << 8" (parenthesized_expression "(uVar24 & 0xff00)" ( (binary_expression "uVar24 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar24 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }" if (parenthesized_expression "(local_114c == 1)" ( (binary_expression "local_114c == 1" identifier == number_literal) )) (compound_statement "{\n              uVar24 = *(uint *)(puVar22 + 4);\n            }" { (expression_statement "uVar24 = *(uint *)(puVar22 + 4);" (assignment_expression "uVar24 = *(uint *)(puVar22 + 4)" identifier = (pointer_expression "*(uint *)(puVar22 + 4)" * (cast_expression "(uint *)(puVar22 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 4)" ( (binary_expression "puVar22 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }" if (parenthesized_expression "((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24)))" ( (binary_expression "(((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))" (parenthesized_expression "(((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19))" ( (binary_expression "((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)" (parenthesized_expression "((-1 < (int)uVar24) && (uVar24 < uVar19))" ( (binary_expression "(-1 < (int)uVar24) && (uVar24 < uVar19)" (parenthesized_expression "(-1 < (int)uVar24)" ( (binary_expression "-1 < (int)uVar24" number_literal < (cast_expression "(int)uVar24" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar24 < uVar19)" ( (binary_expression "uVar24 < uVar19" identifier < identifier) ))) )) && (parenthesized_expression "(uVar17 + uVar24 <= uVar19)" ( (binary_expression "uVar17 + uVar24 <= uVar19" (binary_expression "uVar17 + uVar24" identifier + identifier) <= identifier) ))) )) && (parenthesized_expression "(!CARRY4(uVar17,uVar24))" ( (unary_expression "!CARRY4(uVar17,uVar24)" ! (call_expression "CARRY4(uVar17,uVar24)" identifier (argument_list "(uVar17,uVar24)" ( identifier , identifier )))) ))) )) (compound_statement "{\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }" { (expression_statement "local_1140 = (ushort *)(uVar24 + (int)puVar11);" (assignment_expression "local_1140 = (ushort *)(uVar24 + (int)puVar11)" identifier = (cast_expression "(ushort *)(uVar24 + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar24 + (int)puVar11)" ( (binary_expression "uVar24 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (goto_statement "goto LAB_001241d4;" goto statement_identifier ;) })) }))) (expression_statement "local_1150 = local_1150 + 1;" (assignment_expression "local_1150 = local_1150 + 1" identifier = (binary_expression "local_1150 + 1" identifier + number_literal)) ;) (if_statement "if (uVar12 == local_1150) break;" if (parenthesized_expression "(uVar12 == local_1150)" ( (binary_expression "uVar12 == local_1150" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));" (assignment_expression "puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" identifier = (cast_expression "(ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" ( (binary_expression "(int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe)" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)((int)local_1110 + iVar10 + 0xe)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)local_1110 + iVar10 + 0xe)" ( (binary_expression "(int)local_1110 + iVar10 + 0xe" (binary_expression "(int)local_1110 + iVar10" (cast_expression "(int)local_1110" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) )))) ;) (expression_statement "bVar25 = local_1144 <= puVar1;" (assignment_expression "bVar25 = local_1144 <= puVar1" identifier = (binary_expression "local_1144 <= puVar1" identifier <= identifier)) ;) (expression_statement "local_1144 = local_1144 + 6;" (assignment_expression "local_1144 = local_1144 + 6" identifier = (binary_expression "local_1144 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar25)" ( identifier )) ;) })) })) (if_statement "if (local_112c != 0) goto LAB_00124aba;" if (parenthesized_expression "(local_112c != 0)" ( (binary_expression "local_112c != 0" identifier != number_literal) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00124b97;" goto statement_identifier ;) (while_statement "while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }" while (parenthesized_expression "(iVar10 = iVar10 + 1, iVar10 < iVar7)" ( (comma_expression "iVar10 = iVar10 + 1, iVar10 < iVar7" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) , (binary_expression "iVar10 < iVar7" identifier < identifier)) )) (compound_statement "{\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }" { (labeled_statement "LAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" statement_identifier : (if_statement "if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" if (parenthesized_expression "((char *)local_10e0[iVar10 * 3] == pcVar18)" ( (binary_expression "(char *)local_10e0[iVar10 * 3] == pcVar18" (cast_expression "(char *)local_10e0[iVar10 * 3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_10e0[iVar10 * 3]" identifier [ (binary_expression "iVar10 * 3" identifier * number_literal) ])) == identifier) )) (compound_statement "{\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" { (expression_statement "pcVar18 = (char *)local_10e0[iVar10 * 3];" (assignment_expression "pcVar18 = (char *)local_10e0[iVar10 * 3]" identifier = (cast_expression "(char *)local_10e0[iVar10 * 3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_10e0[iVar10 * 3]" identifier [ (binary_expression "iVar10 * 3" identifier * number_literal) ]))) ;) (if_statement "if (iVar10 < iVar7) goto LAB_00124aba;" if (parenthesized_expression "(iVar10 < iVar7)" ( (binary_expression "iVar10 < iVar7" identifier < identifier) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) (break_statement "break;" break ;) }))) })) (expression_statement "local_10e0[iVar7 * 3] = (uint)pcVar18;" (assignment_expression "local_10e0[iVar7 * 3] = (uint)pcVar18" (subscript_expression "local_10e0[iVar7 * 3]" identifier [ (binary_expression "iVar7 * 3" identifier * number_literal) ]) = (cast_expression "(uint)pcVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_10e0[iVar7 * 3 + 2] = uVar24;" (assignment_expression "local_10e0[iVar7 * 3 + 2] = uVar24" (subscript_expression "local_10e0[iVar7 * 3 + 2]" identifier [ (binary_expression "iVar7 * 3 + 2" (binary_expression "iVar7 * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "local_10e0[iVar7 * 3 + 1] = 0;" (assignment_expression "local_10e0[iVar7 * 3 + 1] = 0" (subscript_expression "local_10e0[iVar7 * 3 + 1]" identifier [ (binary_expression "iVar7 * 3 + 1" (binary_expression "iVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "iVar7 = local_112c + 2;" (assignment_expression "iVar7 = local_112c + 2" identifier = (binary_expression "local_112c + 2" identifier + number_literal)) ;) (if_statement "if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }" if (parenthesized_expression "(((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19))))" ( (binary_expression "((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))" (parenthesized_expression "((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0))" ( (binary_expression "(local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)" (parenthesized_expression "(local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19))" ( (binary_expression "local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)" (binary_expression "local_1110 + uVar12 * 6 + 3" (binary_expression "local_1110 + uVar12 * 6" identifier + (binary_expression "uVar12 * 6" identifier * number_literal)) + number_literal) <= (cast_expression "(ushort *)((int)puVar11 + uVar19)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + uVar19)" ( (binary_expression "(int)puVar11 + uVar19" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) )) && (parenthesized_expression "(uVar12 = FUN_00121780(), uVar12 != 0)" ( (comma_expression "uVar12 = FUN_00121780(), uVar12 != 0" (assignment_expression "uVar12 = FUN_00121780()" identifier = (call_expression "FUN_00121780()" identifier (argument_list "()" ( )))) , (binary_expression "uVar12 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((iVar7 < 0xe && (uVar12 < uVar19)))" ( (parenthesized_expression "(iVar7 < 0xe && (uVar12 < uVar19))" ( (binary_expression "iVar7 < 0xe && (uVar12 < uVar19)" (binary_expression "iVar7 < 0xe" identifier < number_literal) && (parenthesized_expression "(uVar12 < uVar19)" ( (binary_expression "uVar12 < uVar19" identifier < identifier) ))) )) ))) )) (compound_statement "{\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }" { (expression_statement "local_10e0[iVar7 * 3 + 1] = 0;" (assignment_expression "local_10e0[iVar7 * 3 + 1] = 0" (subscript_expression "local_10e0[iVar7 * 3 + 1]" identifier [ (binary_expression "iVar7 * 3 + 1" (binary_expression "iVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);" (assignment_expression "local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11)" (subscript_expression "local_10e0[iVar7 * 3]" identifier [ (binary_expression "iVar7 * 3" identifier * number_literal) ]) = (call_expression "(uint)(uVar12 + (int)puVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 + (int)puVar11)" ( (binary_expression "uVar12 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_10e0[iVar7 * 3 + 2] = uVar24;" (assignment_expression "local_10e0[iVar7 * 3 + 2] = uVar24" (subscript_expression "local_10e0[iVar7 * 3 + 2]" identifier [ (binary_expression "iVar7 * 3 + 2" (binary_expression "iVar7 * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "iVar7 = local_112c + 3;" (assignment_expression "iVar7 = local_112c + 3" identifier = (binary_expression "local_112c + 3" identifier + number_literal)) ;) })) (labeled_statement "LAB_00124aba:\n  local_112c = iVar7;" statement_identifier : (expression_statement "local_112c = iVar7;" (assignment_expression "local_112c = iVar7" identifier = identifier) ;)) (expression_statement "local_112c = local_112c + -1;" (assignment_expression "local_112c = local_112c + -1" identifier = (binary_expression "local_112c + -1" identifier + number_literal)) ;) (expression_statement "local_1110 = (ushort *)local_10e0[local_112c * 3];" (assignment_expression "local_1110 = (ushort *)local_10e0[local_112c * 3]" identifier = (cast_expression "(ushort *)local_10e0[local_112c * 3]" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_10e0[local_112c * 3]" identifier [ (binary_expression "local_112c * 3" identifier * number_literal) ]))) ;) (expression_statement "local_1150 = local_10e0[local_112c * 3 + 1];" (assignment_expression "local_1150 = local_10e0[local_112c * 3 + 1]" identifier = (subscript_expression "local_10e0[local_112c * 3 + 1]" identifier [ (binary_expression "local_112c * 3 + 1" (binary_expression "local_112c * 3" identifier * number_literal) + number_literal) ])) ;) (expression_statement "local_1134 = local_10e0[local_112c * 3 + 2];" (assignment_expression "local_1134 = local_10e0[local_112c * 3 + 2]" identifier = (subscript_expression "local_10e0[local_112c * 3 + 2]" identifier [ (binary_expression "local_112c * 3 + 2" (binary_expression "local_112c * 3" identifier * number_literal) + number_literal) ])) ;) (goto_statement "goto LAB_00124153;" goto statement_identifier ;) (labeled_statement "LAB_00124b97:\n  DestroySplayTree(uVar13);" statement_identifier : (expression_statement "DestroySplayTree(uVar13);" (call_expression "DestroySplayTree(uVar13)" identifier (argument_list "(uVar13)" ( identifier ))) ;)) (goto_statement "goto LAB_00123f5a;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n\nMagickBooleanType __regparm3 GetEXIFProperty(Image *image,char *property,ExceptionInfo *exception)\n\n{\n  ushort *puVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  size_t *psVar5;\n  uint uVar6;\n  ushort uVar7;\n  ushort uVar8;\n  StringInfo *string_info;\n  ushort **ppuVar9;\n  size_t sVar10;\n  int iVar11;\n  uint uVar12;\n  ushort *puVar13;\n  uint uVar14;\n  SplayTreeInfo *splay_tree;\n  ushort *puVar15;\n  MagickBooleanType MVar16;\n  char *pcVar17;\n  void *pvVar18;\n  char *pcVar19;\n  size_t sVar20;\n  ushort *puVar21;\n  uint uVar22;\n  uint extraout_ECX;\n  uchar *puVar23;\n  int iVar24;\n  TagInfo *pTVar25;\n  int iVar26;\n  ushort *key_00;\n  uint uVar27;\n  ssize_t sVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  uint local_1160;\n  int local_1158;\n  uint local_1150;\n  EndianType local_114c;\n  uint local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  int local_1134;\n  int local_112c;\n  ushort *local_1110;\n  MagickBooleanType local_1104;\n  char *key;\n  DirectoryInfo directory_stack [16];\n  char buffer [4096];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  string_info = GetImageProfile(image,"exif");\n  if (((string_info != (StringInfo *)0x0) && (property != (char *)0x0)) &&\n     (bVar3 = *property, bVar3 != 0)) {\n    ppuVar9 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0) {\n      property = (char *)((byte *)property + 1);\n      bVar3 = *property;\n    }\n    sVar10 = strlen(property);\n    if (5 < sVar10) {\n      bVar3 = ((byte *)property)[5];\n      if (bVar3 == 0x23) {\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = MagickFalse;\nLAB_00123f5a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_00124153:\n  if ((puVar13 <= local_1110) && (local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2)))) {\n    uVar8 = *local_1110;\n    if (local_114c != LSBEndian) {\n      uVar8 = uVar8 << 8 | uVar8 >> 8;\n    }\n    uVar14 = (uint)uVar8;\n    iVar11 = local_112c;\n    if (local_1150 < uVar14) {\n      key_00 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));\n      if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar26 = iVar26 + 1, iVar26 < iVar11) {\nLAB_00124c76:\n    if (directory_stack[iVar26].directory == puVar23) {\n      puVar23 = directory_stack[iVar26].directory;\n      if (iVar26 < iVar11) goto LAB_00124aba;\n      break;\n    }\n  }\n  directory_stack[iVar11].directory = puVar23;\n  directory_stack[iVar11].offset = sVar28;\n  directory_stack[iVar11].entry = 0;\n  iVar11 = local_112c + 2;\n  if (((local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&\n      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0)) && ((iVar11 < 0xe && (uVar14 < uVar12)))) {\n    directory_stack[iVar11].entry = 0;\n    directory_stack[iVar11].directory = (uchar *)(uVar14 + (int)puVar13);\n    directory_stack[iVar11].offset = sVar28;\n    iVar11 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar11;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)directory_stack[local_112c].directory;\n  local_1150 = directory_stack[local_112c].entry;\n  local_1134 = directory_stack[local_112c].offset;\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(splay_tree);\n  goto LAB_00123f5a;\n}\n\n" comment comment comment comment comment comment (function_definition "MagickBooleanType __regparm3 GetEXIFProperty(Image *image,char *property,ExceptionInfo *exception)\n\n{\n  ushort *puVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  size_t *psVar5;\n  uint uVar6;\n  ushort uVar7;\n  ushort uVar8;\n  StringInfo *string_info;\n  ushort **ppuVar9;\n  size_t sVar10;\n  int iVar11;\n  uint uVar12;\n  ushort *puVar13;\n  uint uVar14;\n  SplayTreeInfo *splay_tree;\n  ushort *puVar15;\n  MagickBooleanType MVar16;\n  char *pcVar17;\n  void *pvVar18;\n  char *pcVar19;\n  size_t sVar20;\n  ushort *puVar21;\n  uint uVar22;\n  uint extraout_ECX;\n  uchar *puVar23;\n  int iVar24;\n  TagInfo *pTVar25;\n  int iVar26;\n  ushort *key_00;\n  uint uVar27;\n  ssize_t sVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  uint local_1160;\n  int local_1158;\n  uint local_1150;\n  EndianType local_114c;\n  uint local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  int local_1134;\n  int local_112c;\n  ushort *local_1110;\n  MagickBooleanType local_1104;\n  char *key;\n  DirectoryInfo directory_stack [16];\n  char buffer [4096];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  string_info = GetImageProfile(image,"exif");\n  if (((string_info != (StringInfo *)0x0) && (property != (char *)0x0)) &&\n     (bVar3 = *property, bVar3 != 0)) {\n    ppuVar9 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0) {\n      property = (char *)((byte *)property + 1);\n      bVar3 = *property;\n    }\n    sVar10 = strlen(property);\n    if (5 < sVar10) {\n      bVar3 = ((byte *)property)[5];\n      if (bVar3 == 0x23) {\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = MagickFalse;\nLAB_00123f5a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_00124153:\n  if ((puVar13 <= local_1110) && (local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2)))) {\n    uVar8 = *local_1110;\n    if (local_114c != LSBEndian) {\n      uVar8 = uVar8 << 8 | uVar8 >> 8;\n    }\n    uVar14 = (uint)uVar8;\n    iVar11 = local_112c;\n    if (local_1150 < uVar14) {\n      key_00 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));\n      if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar26 = iVar26 + 1, iVar26 < iVar11) {\nLAB_00124c76:\n    if (directory_stack[iVar26].directory == puVar23) {\n      puVar23 = directory_stack[iVar26].directory;\n      if (iVar26 < iVar11) goto LAB_00124aba;\n      break;\n    }\n  }\n  directory_stack[iVar11].directory = puVar23;\n  directory_stack[iVar11].offset = sVar28;\n  directory_stack[iVar11].entry = 0;\n  iVar11 = local_112c + 2;\n  if (((local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&\n      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0)) && ((iVar11 < 0xe && (uVar14 < uVar12)))) {\n    directory_stack[iVar11].entry = 0;\n    directory_stack[iVar11].directory = (uchar *)(uVar14 + (int)puVar13);\n    directory_stack[iVar11].offset = sVar28;\n    iVar11 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar11;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)directory_stack[local_112c].directory;\n  local_1150 = directory_stack[local_112c].entry;\n  local_1134 = directory_stack[local_112c].offset;\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(splay_tree);\n  goto LAB_00123f5a;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "GetEXIFProperty(Image *image,char *property,ExceptionInfo *exception)" identifier (parameter_list "(Image *image,char *property,ExceptionInfo *exception)" ( (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "char *property" primitive_type (pointer_declarator "*property" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  ushort *puVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  size_t *psVar5;\n  uint uVar6;\n  ushort uVar7;\n  ushort uVar8;\n  StringInfo *string_info;\n  ushort **ppuVar9;\n  size_t sVar10;\n  int iVar11;\n  uint uVar12;\n  ushort *puVar13;\n  uint uVar14;\n  SplayTreeInfo *splay_tree;\n  ushort *puVar15;\n  MagickBooleanType MVar16;\n  char *pcVar17;\n  void *pvVar18;\n  char *pcVar19;\n  size_t sVar20;\n  ushort *puVar21;\n  uint uVar22;\n  uint extraout_ECX;\n  uchar *puVar23;\n  int iVar24;\n  TagInfo *pTVar25;\n  int iVar26;\n  ushort *key_00;\n  uint uVar27;\n  ssize_t sVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  uint local_1160;\n  int local_1158;\n  uint local_1150;\n  EndianType local_114c;\n  uint local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  int local_1134;\n  int local_112c;\n  ushort *local_1110;\n  MagickBooleanType local_1104;\n  char *key;\n  DirectoryInfo directory_stack [16];\n  char buffer [4096];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  string_info = GetImageProfile(image,"exif");\n  if (((string_info != (StringInfo *)0x0) && (property != (char *)0x0)) &&\n     (bVar3 = *property, bVar3 != 0)) {\n    ppuVar9 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0) {\n      property = (char *)((byte *)property + 1);\n      bVar3 = *property;\n    }\n    sVar10 = strlen(property);\n    if (5 < sVar10) {\n      bVar3 = ((byte *)property)[5];\n      if (bVar3 == 0x23) {\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = MagickFalse;\nLAB_00123f5a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_00124153:\n  if ((puVar13 <= local_1110) && (local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2)))) {\n    uVar8 = *local_1110;\n    if (local_114c != LSBEndian) {\n      uVar8 = uVar8 << 8 | uVar8 >> 8;\n    }\n    uVar14 = (uint)uVar8;\n    iVar11 = local_112c;\n    if (local_1150 < uVar14) {\n      key_00 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));\n      if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar26 = iVar26 + 1, iVar26 < iVar11) {\nLAB_00124c76:\n    if (directory_stack[iVar26].directory == puVar23) {\n      puVar23 = directory_stack[iVar26].directory;\n      if (iVar26 < iVar11) goto LAB_00124aba;\n      break;\n    }\n  }\n  directory_stack[iVar11].directory = puVar23;\n  directory_stack[iVar11].offset = sVar28;\n  directory_stack[iVar11].entry = 0;\n  iVar11 = local_112c + 2;\n  if (((local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&\n      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0)) && ((iVar11 < 0xe && (uVar14 < uVar12)))) {\n    directory_stack[iVar11].entry = 0;\n    directory_stack[iVar11].directory = (uchar *)(uVar14 + (int)puVar13);\n    directory_stack[iVar11].offset = sVar28;\n    iVar11 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar11;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)directory_stack[local_112c].directory;\n  local_1150 = directory_stack[local_112c].entry;\n  local_1134 = directory_stack[local_112c].offset;\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(splay_tree);\n  goto LAB_00123f5a;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "size_t *psVar5;" primitive_type (pointer_declarator "*psVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ushort uVar7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "StringInfo *string_info;" type_identifier (pointer_declarator "*string_info" * identifier) ;) (declaration "ushort **ppuVar9;" type_identifier (pointer_declarator "**ppuVar9" * (pointer_declarator "*ppuVar9" * identifier)) ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "ushort *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "SplayTreeInfo *splay_tree;" type_identifier (pointer_declarator "*splay_tree" * identifier) ;) (declaration "ushort *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "MagickBooleanType MVar16;" type_identifier identifier ;) (declaration "char *pcVar17;" primitive_type (pointer_declarator "*pcVar17" * identifier) ;) (declaration "void *pvVar18;" primitive_type (pointer_declarator "*pvVar18" * identifier) ;) (declaration "char *pcVar19;" primitive_type (pointer_declarator "*pcVar19" * identifier) ;) (declaration "size_t sVar20;" primitive_type identifier ;) (declaration "ushort *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uchar *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "TagInfo *pTVar25;" type_identifier (pointer_declarator "*pTVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "ushort *key_00;" type_identifier (pointer_declarator "*key_00" * identifier) ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "ssize_t sVar28;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "uint local_1160;" type_identifier identifier ;) (declaration "int local_1158;" primitive_type identifier ;) (declaration "uint local_1150;" type_identifier identifier ;) (declaration "EndianType local_114c;" type_identifier identifier ;) (declaration "uint local_1148;" type_identifier identifier ;) (declaration "ushort *local_1144;" type_identifier (pointer_declarator "*local_1144" * identifier) ;) (declaration "ushort *local_1140;" type_identifier (pointer_declarator "*local_1140" * identifier) ;) (declaration "int local_1134;" primitive_type identifier ;) (declaration "int local_112c;" primitive_type identifier ;) (declaration "ushort *local_1110;" type_identifier (pointer_declarator "*local_1110" * identifier) ;) (declaration "MagickBooleanType local_1104;" type_identifier identifier ;) (declaration "char *key;" primitive_type (pointer_declarator "*key" * identifier) ;) (declaration "DirectoryInfo directory_stack [16];" type_identifier (array_declarator "directory_stack [16]" identifier [ number_literal ]) ;) (declaration "char buffer [4096];" primitive_type (array_declarator "buffer [4096]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "string_info = GetImageProfile(image,"exif");" (assignment_expression "string_info = GetImageProfile(image,"exif")" identifier = (call_expression "GetImageProfile(image,"exif")" identifier (argument_list "(image,"exif")" ( identifier , (string_literal ""exif"" " string_content ") )))) ;) (if_statement "if (((string_info != (StringInfo *)0x0) && (property != (char *)0x0)) &&\n     (bVar3 = *property, bVar3 != 0)) {\n    ppuVar9 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0) {\n      property = (char *)((byte *)property + 1);\n      bVar3 = *property;\n    }\n    sVar10 = strlen(property);\n    if (5 < sVar10) {\n      bVar3 = ((byte *)property)[5];\n      if (bVar3 == 0x23) {\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }\n    }\n  }" if (parenthesized_expression "(((string_info != (StringInfo *)0x0) && (property != (char *)0x0)) &&\n     (bVar3 = *property, bVar3 != 0))" ( (binary_expression "((string_info != (StringInfo *)0x0) && (property != (char *)0x0)) &&\n     (bVar3 = *property, bVar3 != 0)" (parenthesized_expression "((string_info != (StringInfo *)0x0) && (property != (char *)0x0))" ( (binary_expression "(string_info != (StringInfo *)0x0) && (property != (char *)0x0)" (parenthesized_expression "(string_info != (StringInfo *)0x0)" ( (binary_expression "string_info != (StringInfo *)0x0" identifier != (cast_expression "(StringInfo *)0x0" ( (type_descriptor "StringInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(property != (char *)0x0)" ( (binary_expression "property != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(bVar3 = *property, bVar3 != 0)" ( (comma_expression "bVar3 = *property, bVar3 != 0" (assignment_expression "bVar3 = *property" identifier = (pointer_expression "*property" * identifier)) , (binary_expression "bVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    ppuVar9 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0) {\n      property = (char *)((byte *)property + 1);\n      bVar3 = *property;\n    }\n    sVar10 = strlen(property);\n    if (5 < sVar10) {\n      bVar3 = ((byte *)property)[5];\n      if (bVar3 == 0x23) {\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }\n    }\n  }" { (expression_statement "ppuVar9 = __ctype_b_loc();" (assignment_expression "ppuVar9 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (while_statement "while ((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0) {\n      property = (char *)((byte *)property + 1);\n      bVar3 = *property;\n    }" while (parenthesized_expression "((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1)" * (cast_expression "(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar9 + (uint)bVar3 * 2 + 1)" ( (binary_expression "(int)*ppuVar9 + (uint)bVar3 * 2 + 1" (binary_expression "(int)*ppuVar9 + (uint)bVar3 * 2" (cast_expression "(int)*ppuVar9" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar9" * identifier)) + (binary_expression "(uint)bVar3 * 2" (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      property = (char *)((byte *)property + 1);\n      bVar3 = *property;\n    }" { (expression_statement "property = (char *)((byte *)property + 1);" (assignment_expression "property = (char *)((byte *)property + 1)" identifier = (cast_expression "(char *)((byte *)property + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)property + 1)" ( (binary_expression "(byte *)property + 1" (cast_expression "(byte *)property" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar3 = *property;" (assignment_expression "bVar3 = *property" identifier = (pointer_expression "*property" * identifier)) ;) })) (expression_statement "sVar10 = strlen(property);" (assignment_expression "sVar10 = strlen(property)" identifier = (call_expression "strlen(property)" identifier (argument_list "(property)" ( identifier )))) ;) (if_statement "if (5 < sVar10) {\n      bVar3 = ((byte *)property)[5];\n      if (bVar3 == 0x23) {\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }\n    }" if (parenthesized_expression "(5 < sVar10)" ( (binary_expression "5 < sVar10" number_literal < identifier) )) (compound_statement "{\n      bVar3 = ((byte *)property)[5];\n      if (bVar3 == 0x23) {\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }\n    }" { (expression_statement "bVar3 = ((byte *)property)[5];" (assignment_expression "bVar3 = ((byte *)property)[5]" identifier = (subscript_expression "((byte *)property)[5]" (parenthesized_expression "((byte *)property)" ( (cast_expression "(byte *)property" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ])) ;) (if_statement "if (bVar3 == 0x23) {\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }" if (parenthesized_expression "(bVar3 == 0x23)" ( (binary_expression "bVar3 == 0x23" identifier == number_literal) )) (compound_statement "{\nLAB_00123edc:\n        property = (char *)((byte *)property + 6);\n        sVar10 = strlen(property);\n        if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }" { (labeled_statement "LAB_00123edc:\n        property = (char *)((byte *)property + 6);" statement_identifier : (expression_statement "property = (char *)((byte *)property + 6);" (assignment_expression "property = (char *)((byte *)property + 6)" identifier = (cast_expression "(char *)((byte *)property + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)property + 6)" ( (binary_expression "(byte *)property + 6" (cast_expression "(byte *)property" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;)) (expression_statement "sVar10 = strlen(property);" (assignment_expression "sVar10 = strlen(property)" identifier = (call_expression "strlen(property)" identifier (argument_list "(property)" ( identifier )))) ;) (if_statement "if (sVar10 == 4) {\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }" if (parenthesized_expression "(sVar10 == 4)" ( (binary_expression "sVar10 == 4" identifier == number_literal) )) (compound_statement "{\n          local_1160 = (uint)(bVar3 == 0x40);\n          do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);\nLAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }" { (expression_statement "local_1160 = (uint)(bVar3 == 0x40);" (assignment_expression "local_1160 = (uint)(bVar3 == 0x40)" identifier = (call_expression "(uint)(bVar3 == 0x40)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar3 == 0x40)" ( (binary_expression "bVar3 == 0x40" identifier == number_literal) )))) ;) (do_statement "do {\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          } while (*property != 0);" do (compound_statement "{\n            iVar11 = (int)*property;\n            local_1160 = local_1160 << 4;\n            if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }\n            property = (char *)((byte *)property + 1);\n          }" { (expression_statement "iVar11 = (int)*property;" (assignment_expression "iVar11 = (int)*property" identifier = (cast_expression "(int)*property" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*property" * identifier))) ;) (expression_statement "local_1160 = local_1160 << 4;" (assignment_expression "local_1160 = local_1160 << 4" identifier = (binary_expression "local_1160 << 4" identifier << number_literal)) ;) (if_statement "if (iVar11 - 0x30U < 10) {\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }\n            else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }" if (parenthesized_expression "(iVar11 - 0x30U < 10)" ( (binary_expression "iVar11 - 0x30U < 10" (binary_expression "iVar11 - 0x30U" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_1160 = local_1160 | iVar11 - 0x30U;\n            }" { (expression_statement "local_1160 = local_1160 | iVar11 - 0x30U;" (assignment_expression "local_1160 = local_1160 | iVar11 - 0x30U" identifier = (binary_expression "local_1160 | iVar11 - 0x30U" identifier | (binary_expression "iVar11 - 0x30U" identifier - number_literal))) ;) }) (else_clause "else if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }" else (if_statement "if (iVar11 - 0x41U < 6) {\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }\n            else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }" if (parenthesized_expression "(iVar11 - 0x41U < 6)" ( (binary_expression "iVar11 - 0x41U < 6" (binary_expression "iVar11 - 0x41U" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_1160 = local_1160 | iVar11 - 0x37U;\n            }" { (expression_statement "local_1160 = local_1160 | iVar11 - 0x37U;" (assignment_expression "local_1160 = local_1160 | iVar11 - 0x37U" identifier = (binary_expression "local_1160 | iVar11 - 0x37U" identifier | (binary_expression "iVar11 - 0x37U" identifier - number_literal))) ;) }) (else_clause "else {\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }" else (compound_statement "{\n              if (5 < iVar11 - 0x61U) goto LAB_00123f58;\n              local_1160 = local_1160 | iVar11 - 0x57U;\n            }" { (if_statement "if (5 < iVar11 - 0x61U) goto LAB_00123f58;" if (parenthesized_expression "(5 < iVar11 - 0x61U)" ( (binary_expression "5 < iVar11 - 0x61U" number_literal < (binary_expression "iVar11 - 0x61U" identifier - number_literal)) )) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;)) (expression_statement "local_1160 = local_1160 | iVar11 - 0x57U;" (assignment_expression "local_1160 = local_1160 | iVar11 - 0x57U" identifier = (binary_expression "local_1160 | iVar11 - 0x57U" identifier | (binary_expression "iVar11 - 0x57U" identifier - number_literal))) ;) }))))) (expression_statement "property = (char *)((byte *)property + 1);" (assignment_expression "property = (char *)((byte *)property + 1)" identifier = (cast_expression "(char *)((byte *)property + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)property + 1)" ( (binary_expression "(byte *)property + 1" (cast_expression "(byte *)property" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(*property != 0)" ( (binary_expression "*property != 0" (pointer_expression "*property" * identifier) != number_literal) )) ;) (labeled_statement "LAB_00123f24:\n          if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" statement_identifier : (if_statement "if (local_1160 != 0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" if (parenthesized_expression "(local_1160 != 0xffffffff)" ( (binary_expression "local_1160 != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" { (expression_statement "local_1158 = 0;" (assignment_expression "local_1158 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00123f38;" goto statement_identifier ;) }))) })) }) (else_clause "else {\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }" else (compound_statement "{\n        if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }\nLAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);\n        if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }\n      }" { (if_statement "if ((char)bVar3 < '$') {\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }" if (parenthesized_expression "((char)bVar3 < '$')" ( (binary_expression "(char)bVar3 < '$'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'$'" ' character ')) )) (compound_statement "{\n          local_1158 = 2;\n          local_1160 = 0;\n          if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }\n        }" { (expression_statement "local_1158 = 2;" (assignment_expression "local_1158 = 2" identifier = number_literal) ;) (expression_statement "local_1160 = 0;" (assignment_expression "local_1160 = 0" identifier = number_literal) ;) (if_statement "if (bVar3 != 0x21) {\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }" if (parenthesized_expression "(bVar3 != 0x21)" ( (binary_expression "bVar3 != 0x21" identifier != number_literal) )) (compound_statement "{\nLAB_00123f95:\n            local_1160 = 1;\n            pcVar19 = GetEXIFProperty::EXIFTag[0].description;\n            do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);\n            goto LAB_00123f58;\n          }" { (labeled_statement "LAB_00123f95:\n            local_1160 = 1;" statement_identifier : (expression_statement "local_1160 = 1;" (assignment_expression "local_1160 = 1" identifier = number_literal) ;)) (expression_statement "pcVar19 = GetEXIFProperty::EXIFTag[0].description;" (field_expression "pcVar19 = GetEXIFProperty::EXIFTag[0].description" (subscript_expression "pcVar19 = GetEXIFProperty::EXIFTag[0]" (assignment_expression "pcVar19 = GetEXIFProperty" identifier = identifier) (ERROR "::EXIFTag" : : identifier) [ number_literal ]) . field_identifier) ;) (do_statement "do {\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            } while (local_1160 != 0);" do (compound_statement "{\n              iVar11 = LocaleCompare(pcVar19,property);\n              if (iVar11 == 0) goto LAB_00123f24;\n              local_1160 = *(uint *)(pcVar19 + 0x24);\n              pcVar19 = pcVar19 + 0x28;\n            }" { (expression_statement "iVar11 = LocaleCompare(pcVar19,property);" (assignment_expression "iVar11 = LocaleCompare(pcVar19,property)" identifier = (call_expression "LocaleCompare(pcVar19,property)" identifier (argument_list "(pcVar19,property)" ( identifier , identifier )))) ;) (if_statement "if (iVar11 == 0) goto LAB_00123f24;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00123f24;" goto statement_identifier ;)) (expression_statement "local_1160 = *(uint *)(pcVar19 + 0x24);" (assignment_expression "local_1160 = *(uint *)(pcVar19 + 0x24)" identifier = (pointer_expression "*(uint *)(pcVar19 + 0x24)" * (cast_expression "(uint *)(pcVar19 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x24)" ( (binary_expression "pcVar19 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pcVar19 = pcVar19 + 0x28;" (assignment_expression "pcVar19 = pcVar19 + 0x28" identifier = (binary_expression "pcVar19 + 0x28" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_1160 != 0)" ( (binary_expression "local_1160 != 0" identifier != number_literal) )) ;) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;) })) }) (else_clause "else {\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }" else (compound_statement "{\n          if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = 0;\n        }" { (if_statement "if (bVar3 != 0x2a) {\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }" if (parenthesized_expression "(bVar3 != 0x2a)" ( (binary_expression "bVar3 != 0x2a" identifier != number_literal) )) (compound_statement "{\n            if (bVar3 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }" { (if_statement "if (bVar3 != 0x40) goto LAB_00123f95;" if (parenthesized_expression "(bVar3 != 0x40)" ( (binary_expression "bVar3 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_00123f95;" goto statement_identifier ;)) (goto_statement "goto LAB_00123edc;" goto statement_identifier ;) })) (expression_statement "local_1158 = 1;" (assignment_expression "local_1158 = 1" identifier = number_literal) ;) (expression_statement "local_1160 = 0;" (assignment_expression "local_1160 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_00123f38:\n        uVar12 = GetStringInfoLength(string_info);" statement_identifier : (expression_statement "uVar12 = GetStringInfoLength(string_info);" (assignment_expression "uVar12 = GetStringInfoLength(string_info)" identifier = (call_expression "GetStringInfoLength(string_info)" identifier (argument_list "(string_info)" ( identifier )))) ;)) (if_statement "if (5 < uVar12) {\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }" if (parenthesized_expression "(5 < uVar12)" ( (binary_expression "5 < uVar12" number_literal < identifier) )) (compound_statement "{\n          puVar13 = (ushort *)GetStringInfoDatum(string_info);\n          do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);\n        }" { (expression_statement "puVar13 = (ushort *)GetStringInfoDatum(string_info);" (assignment_expression "puVar13 = (ushort *)GetStringInfoDatum(string_info)" identifier = (cast_expression "(ushort *)GetStringInfoDatum(string_info)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetStringInfoDatum(string_info)" identifier (argument_list "(string_info)" ( identifier ))))) ;) (do_statement "do {\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          } while (uVar12 != 0);" do (compound_statement "{\n            cVar4 = (char)*puVar13;\n            puVar21 = puVar13;\n            uVar6 = uVar12;\n            while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }\n            if (uVar12 == 0) break;\n            uVar12 = uVar6 - 2;\n            if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }\n          }" { (expression_statement "cVar4 = (char)*puVar13;" (assignment_expression "cVar4 = (char)*puVar13" identifier = (cast_expression "(char)*puVar13" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar13" * identifier))) ;) (expression_statement "puVar21 = puVar13;" (assignment_expression "puVar21 = puVar13" identifier = identifier) ;) (expression_statement "uVar6 = uVar12;" (assignment_expression "uVar6 = uVar12" identifier = identifier) ;) (while_statement "while (uVar12 = uVar6 - 1, cVar4 != 'E') {\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }" while (parenthesized_expression "(uVar12 = uVar6 - 1, cVar4 != 'E')" ( (comma_expression "uVar12 = uVar6 - 1, cVar4 != 'E'" (assignment_expression "uVar12 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) , (binary_expression "cVar4 != 'E'" identifier != (char_literal "'E'" ' character '))) )) (compound_statement "{\n              if (uVar12 == 0) goto LAB_00123f58;\n              puVar21 = (ushort *)((int)puVar21 + 1);\n              uVar6 = uVar12;\n              cVar4 = *(char *)puVar21;\n            }" { (if_statement "if (uVar12 == 0) goto LAB_00123f58;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;)) (expression_statement "puVar21 = (ushort *)((int)puVar21 + 1);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + 1)" identifier = (cast_expression "(ushort *)((int)puVar21 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 1)" ( (binary_expression "(int)puVar21 + 1" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar6 = uVar12;" (assignment_expression "uVar6 = uVar12" identifier = identifier) ;) (expression_statement "cVar4 = *(char *)puVar21;" (assignment_expression "cVar4 = *(char *)puVar21" identifier = (pointer_expression "*(char *)puVar21" * (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (if_statement "if (uVar12 == 0) break;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = uVar6 - 2;" (assignment_expression "uVar12 = uVar6 - 2" identifier = (binary_expression "uVar6 - 2" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar21 + 1) == 'x') {\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }\n            else {\n              puVar13 = puVar21 + 1;\n            }" if (parenthesized_expression "(*(char *)((int)puVar21 + 1) == 'x')" ( (binary_expression "*(char *)((int)puVar21 + 1) == 'x'" (pointer_expression "*(char *)((int)puVar21 + 1)" * (cast_expression "(char *)((int)puVar21 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 1)" ( (binary_expression "(int)puVar21 + 1" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'x'" ' character ')) )) (compound_statement "{\n              if (uVar12 == 0) break;\n              uVar12 = uVar6 - 3;\n              if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }\n            }" { (if_statement "if (uVar12 == 0) break;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = uVar6 - 3;" (assignment_expression "uVar12 = uVar6 - 3" identifier = (binary_expression "uVar6 - 3" identifier - number_literal)) ;) (if_statement "if ((char)puVar21[1] == 'i') {\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }\n              else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }" if (parenthesized_expression "((char)puVar21[1] == 'i')" ( (binary_expression "(char)puVar21[1] == 'i'" (cast_expression "(char)puVar21[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar21[1]" identifier [ number_literal ])) == (char_literal "'i'" ' character ')) )) (compound_statement "{\n                if (uVar12 == 0) break;\n                uVar12 = uVar6 - 4;\n                if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }\n              }" { (if_statement "if (uVar12 == 0) break;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = uVar6 - 4;" (assignment_expression "uVar12 = uVar6 - 4" identifier = (binary_expression "uVar6 - 4" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar21 + 3) == 'f') {\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }\n                else {\n                  puVar13 = puVar21 + 2;\n                }" if (parenthesized_expression "(*(char *)((int)puVar21 + 3) == 'f')" ( (binary_expression "*(char *)((int)puVar21 + 3) == 'f'" (pointer_expression "*(char *)((int)puVar21 + 3)" * (cast_expression "(char *)((int)puVar21 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 3)" ( (binary_expression "(int)puVar21 + 3" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'f'" ' character ')) )) (compound_statement "{\n                  if (uVar12 == 0) break;\n                  uVar12 = uVar6 - 5;\n                  if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }\n                }" { (if_statement "if (uVar12 == 0) break;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = uVar6 - 5;" (assignment_expression "uVar12 = uVar6 - 5" identifier = (binary_expression "uVar6 - 5" identifier - number_literal)) ;) (if_statement "if ((char)puVar21[2] == '\0') {\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }" if (parenthesized_expression "((char)puVar21[2] == '\0')" ( (binary_expression "(char)puVar21[2] == '\0'" (cast_expression "(char)puVar21[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar21[2]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    if (uVar12 == 0) break;\n                    puVar13 = puVar21 + 3;\n                    uVar12 = uVar6 - 6;\n                    if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }" { (if_statement "if (uVar12 == 0) break;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar13 = puVar21 + 3;" (assignment_expression "puVar13 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar6 - 6;" (assignment_expression "uVar12 = uVar6 - 6" identifier = (binary_expression "uVar6 - 6" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar21 + 5) == '\0') {\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }" if (parenthesized_expression "(*(char *)((int)puVar21 + 5) == '\0')" ( (binary_expression "*(char *)((int)puVar21 + 5) == '\0'" (pointer_expression "*(char *)((int)puVar21 + 5)" * (cast_expression "(char *)((int)puVar21 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 5)" ( (binary_expression "(int)puVar21 + 5" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      if (uVar12 < 0x10) break;\n                      if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }\n                      if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }" { (if_statement "if (uVar12 < 0x10) break;" if (parenthesized_expression "(uVar12 < 0x10)" ( (binary_expression "uVar12 < 0x10" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (puVar21[3] == 0x4949) {\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }\n                      else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }" if (parenthesized_expression "(puVar21[3] == 0x4949)" ( (binary_expression "puVar21[3] == 0x4949" (subscript_expression "puVar21[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                        if (puVar21[4] != 0x2a) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = LSBEndian;\n                      }" { (if_statement "if (puVar21[4] != 0x2a) break;" if (parenthesized_expression "(puVar21[4] != 0x2a)" ( (binary_expression "puVar21[4] != 0x2a" (subscript_expression "puVar21[4]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = *(uint *)(puVar21 + 5);" (assignment_expression "uVar14 = *(uint *)(puVar21 + 5)" identifier = (pointer_expression "*(uint *)(puVar21 + 5)" * (cast_expression "(uint *)(puVar21 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 5)" ( (binary_expression "puVar21 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_114c = LSBEndian;" (assignment_expression "local_114c = LSBEndian" identifier = identifier) ;) }) (else_clause "else {\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }" else (compound_statement "{\n                        if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;\n                        uVar14 = *(uint *)(puVar21 + 5);\n                        local_114c = MSBEndian;\n                        uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;\n                      }" { (if_statement "if ((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)) break;" if (parenthesized_expression "((puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00))" ( (binary_expression "(puVar21[3] != 0x4d4d) || (puVar21[4] != 0x2a00)" (parenthesized_expression "(puVar21[3] != 0x4d4d)" ( (binary_expression "puVar21[3] != 0x4d4d" (subscript_expression "puVar21[3]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(puVar21[4] != 0x2a00)" ( (binary_expression "puVar21[4] != 0x2a00" (subscript_expression "puVar21[4]" identifier [ number_literal ]) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = *(uint *)(puVar21 + 5);" (assignment_expression "uVar14 = *(uint *)(puVar21 + 5)" identifier = (pointer_expression "*(uint *)(puVar21 + 5)" * (cast_expression "(uint *)(puVar21 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 5)" ( (binary_expression "puVar21 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_114c = MSBEndian;" (assignment_expression "local_114c = MSBEndian" identifier = identifier) ;) (expression_statement "uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18;" (assignment_expression "uVar14 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18" identifier = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8\n                                 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) }))) (if_statement "if ((-1 < (int)uVar14) && (uVar14 < uVar12)) {\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }" if (parenthesized_expression "((-1 < (int)uVar14) && (uVar14 < uVar12))" ( (binary_expression "(-1 < (int)uVar14) && (uVar14 < uVar12)" (parenthesized_expression "(-1 < (int)uVar14)" ( (binary_expression "-1 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar14 < uVar12)" ( (binary_expression "uVar14 < uVar12" identifier < identifier) ))) )) (compound_statement "{\n                        local_1110 = (ushort *)(uVar14 + (int)puVar13);\n                        splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = MagickFalse;\n                        goto LAB_00124153;\n                      }" { (expression_statement "local_1110 = (ushort *)(uVar14 + (int)puVar13);" (assignment_expression "local_1110 = (ushort *)(uVar14 + (int)puVar13)" identifier = (cast_expression "(ushort *)(uVar14 + (int)puVar13)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar14 + (int)puVar13)" ( (binary_expression "uVar14 + (int)puVar13" identifier + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0);" (assignment_expression "splay_tree = NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0)" identifier = (call_expression "NewSplayTree((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0)" identifier (argument_list "((_func_int_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0,\n                                                  (_func_void_ptr_void_ptr *)0x0)" ( (cast_expression "(_func_int_void_ptr_void_ptr *)0x0" ( (type_descriptor "_func_int_void_ptr_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(_func_void_ptr_void_ptr *)0x0" ( (type_descriptor "_func_void_ptr_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(_func_void_ptr_void_ptr *)0x0" ( (type_descriptor "_func_void_ptr_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "local_1134 = 0;" (assignment_expression "local_1134 = 0" identifier = number_literal) ;) (expression_statement "local_112c = 0;" (assignment_expression "local_112c = 0" identifier = number_literal) ;) (expression_statement "local_1150 = 0;" (assignment_expression "local_1150 = 0" identifier = number_literal) ;) (expression_statement "local_1104 = MagickFalse;" (assignment_expression "local_1104 = MagickFalse" identifier = identifier) ;) (goto_statement "goto LAB_00124153;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) }) (else_clause "else {\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }" else (compound_statement "{\n                    puVar13 = (ushort *)((int)puVar21 + 5);\n                  }" { (expression_statement "puVar13 = (ushort *)((int)puVar21 + 5);" (assignment_expression "puVar13 = (ushort *)((int)puVar21 + 5)" identifier = (cast_expression "(ushort *)((int)puVar21 + 5)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 5)" ( (binary_expression "(int)puVar21 + 5" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) }) (else_clause "else {\n                  puVar13 = puVar21 + 2;\n                }" else (compound_statement "{\n                  puVar13 = puVar21 + 2;\n                }" { (expression_statement "puVar13 = puVar21 + 2;" (assignment_expression "puVar13 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) }))) }) (else_clause "else {\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }" else (compound_statement "{\n                puVar13 = (ushort *)((int)puVar21 + 3);\n              }" { (expression_statement "puVar13 = (ushort *)((int)puVar21 + 3);" (assignment_expression "puVar13 = (ushort *)((int)puVar21 + 3)" identifier = (cast_expression "(ushort *)((int)puVar21 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 3)" ( (binary_expression "(int)puVar21 + 3" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) }) (else_clause "else {\n              puVar13 = puVar21 + 1;\n            }" else (compound_statement "{\n              puVar13 = puVar21 + 1;\n            }" { (expression_statement "puVar13 = puVar21 + 1;" (assignment_expression "puVar13 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) ;) })) }))) })) })) (labeled_statement "LAB_00123f58:\n  local_1104 = MagickFalse;" statement_identifier : (expression_statement "local_1104 = MagickFalse;" (assignment_expression "local_1104 = MagickFalse" identifier = identifier) ;)) (labeled_statement "LAB_00123f5a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_1104;\n  }" { (return_statement "return local_1104;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00124153:\n  if ((puVar13 <= local_1110) && (local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2)))) {\n    uVar8 = *local_1110;\n    if (local_114c != LSBEndian) {\n      uVar8 = uVar8 << 8 | uVar8 >> 8;\n    }\n    uVar14 = (uint)uVar8;\n    iVar11 = local_112c;\n    if (local_1150 < uVar14) {\n      key_00 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));\n      if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" statement_identifier : (if_statement "if ((puVar13 <= local_1110) && (local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2)))) {\n    uVar8 = *local_1110;\n    if (local_114c != LSBEndian) {\n      uVar8 = uVar8 << 8 | uVar8 >> 8;\n    }\n    uVar14 = (uint)uVar8;\n    iVar11 = local_112c;\n    if (local_1150 < uVar14) {\n      key_00 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));\n      if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" if (parenthesized_expression "((puVar13 <= local_1110) && (local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2))))" ( (binary_expression "(puVar13 <= local_1110) && (local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2)))" (parenthesized_expression "(puVar13 <= local_1110)" ( (binary_expression "puVar13 <= local_1110" identifier <= identifier) )) && (parenthesized_expression "(local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2)))" ( (binary_expression "local_1110 <= (ushort *)((int)puVar21 + (uVar6 - 2))" identifier <= (cast_expression "(ushort *)((int)puVar21 + (uVar6 - 2))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (uVar6 - 2))" ( (binary_expression "(int)puVar21 + (uVar6 - 2)" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar6 - 2)" ( (binary_expression "uVar6 - 2" identifier - number_literal) ))) )))) ))) )) (compound_statement "{\n    uVar8 = *local_1110;\n    if (local_114c != LSBEndian) {\n      uVar8 = uVar8 << 8 | uVar8 >> 8;\n    }\n    uVar14 = (uint)uVar8;\n    iVar11 = local_112c;\n    if (local_1150 < uVar14) {\n      key_00 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));\n      if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" { (expression_statement "uVar8 = *local_1110;" (assignment_expression "uVar8 = *local_1110" identifier = (pointer_expression "*local_1110" * identifier)) ;) (if_statement "if (local_114c != LSBEndian) {\n      uVar8 = uVar8 << 8 | uVar8 >> 8;\n    }" if (parenthesized_expression "(local_114c != LSBEndian)" ( (binary_expression "local_114c != LSBEndian" identifier != identifier) )) (compound_statement "{\n      uVar8 = uVar8 << 8 | uVar8 >> 8;\n    }" { (expression_statement "uVar8 = uVar8 << 8 | uVar8 >> 8;" (assignment_expression "uVar8 = uVar8 << 8 | uVar8 >> 8" identifier = (binary_expression "uVar8 << 8 | uVar8 >> 8" (binary_expression "uVar8 << 8" identifier << number_literal) | (binary_expression "uVar8 >> 8" identifier >> number_literal))) ;) })) (expression_statement "uVar14 = (uint)uVar8;" (assignment_expression "uVar14 = (uint)uVar8" identifier = (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar11 = local_112c;" (assignment_expression "iVar11 = local_112c" identifier = identifier) ;) (if_statement "if (local_1150 < uVar14) {\n      key_00 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));\n      if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }\n    }" if (parenthesized_expression "(local_1150 < uVar14)" ( (binary_expression "local_1150 < uVar14" identifier < identifier) )) (compound_statement "{\n      key_00 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));\n      if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }\n    }" { (expression_statement "key_00 = local_1110 + local_1150 * 6 + 1;" (assignment_expression "key_00 = local_1110 + local_1150 * 6 + 1" identifier = (binary_expression "local_1110 + local_1150 * 6 + 1" (binary_expression "local_1110 + local_1150 * 6" identifier + (binary_expression "local_1150 * 6" identifier * number_literal)) + number_literal)) ;) (expression_statement "puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc));" (assignment_expression "puVar1 = (ushort *)((int)puVar21 + (uVar6 - 0xc))" identifier = (cast_expression "(ushort *)((int)puVar21 + (uVar6 - 0xc))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (uVar6 - 0xc))" ( (binary_expression "(int)puVar21 + (uVar6 - 0xc)" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar6 - 0xc)" ( (binary_expression "uVar6 - 0xc" identifier - number_literal) ))) )))) ;) (if_statement "if (key_00 <= puVar1) {\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }" if (parenthesized_expression "(key_00 <= puVar1)" ( (binary_expression "key_00 <= puVar1" identifier <= identifier) )) (compound_statement "{\n        iVar26 = local_1150 * 0xc - (int)key_00;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);\n      }" { (expression_statement "iVar26 = local_1150 * 0xc - (int)key_00;" (assignment_expression "iVar26 = local_1150 * 0xc - (int)key_00" identifier = (binary_expression "local_1150 * 0xc - (int)key_00" (binary_expression "local_1150 * 0xc" identifier * number_literal) - (cast_expression "(int)key_00" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_1144 = local_1110 + local_1150 * 6 + 7;" (assignment_expression "local_1144 = local_1110 + local_1150 * 6 + 7" identifier = (binary_expression "local_1110 + local_1150 * 6 + 7" (binary_expression "local_1110 + local_1150 * 6" identifier + (binary_expression "local_1150 * 6" identifier * number_literal)) + number_literal)) ;) (do_statement "do {\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar29);" do (compound_statement "{\n          puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);\n          if (puVar15 == key_00) break;\n          AddValueToSplayTree(splay_tree,key_00,key_00);\n          if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }\n          local_1148 = (uint)uVar7 + local_1134;\n          if ((int)uVar27 < 0) break;\n          uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;\n          if ((int)uVar22 < (int)uVar27) break;\n          if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar14 == local_1150) break;\n          key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));\n          bVar29 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        }" { (expression_statement "puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00);" (assignment_expression "puVar15 = (ushort *)GetValueFromSplayTree(splay_tree,key_00)" identifier = (cast_expression "(ushort *)GetValueFromSplayTree(splay_tree,key_00)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetValueFromSplayTree(splay_tree,key_00)" identifier (argument_list "(splay_tree,key_00)" ( identifier , identifier ))))) ;) (if_statement "if (puVar15 == key_00) break;" if (parenthesized_expression "(puVar15 == key_00)" ( (binary_expression "puVar15 == key_00" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "AddValueToSplayTree(splay_tree,key_00,key_00);" (call_expression "AddValueToSplayTree(splay_tree,key_00,key_00)" identifier (argument_list "(splay_tree,key_00,key_00)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_114c == LSBEndian) {\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }\n          else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }" if (parenthesized_expression "(local_114c == LSBEndian)" ( (binary_expression "local_114c == LSBEndian" identifier == identifier) )) (compound_statement "{\n            uVar8 = key_00[1];\n            uVar7 = *key_00;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n          }" { (expression_statement "uVar8 = key_00[1];" (assignment_expression "uVar8 = key_00[1]" identifier = (subscript_expression "key_00[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = *key_00;" (assignment_expression "uVar7 = *key_00" identifier = (pointer_expression "*key_00" * identifier)) ;) (if_statement "if (0xb < (ushort)(uVar8 - 1)) break;" if (parenthesized_expression "(0xb < (ushort)(uVar8 - 1))" ( (binary_expression "0xb < (ushort)(uVar8 - 1)" number_literal < (call_expression "(ushort)(uVar8 - 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar8 - 1)" ( (binary_expression "uVar8 - 1" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "uVar27 = *(uint *)(key_00 + 2);" (assignment_expression "uVar27 = *(uint *)(key_00 + 2)" identifier = (pointer_expression "*(uint *)(key_00 + 2)" * (cast_expression "(uint *)(key_00 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(key_00 + 2)" ( (binary_expression "key_00 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }" else (compound_statement "{\n            uVar7 = *key_00 << 8 | *key_00 >> 8;\n            uVar8 = key_00[1] << 8 | key_00[1] >> 8;\n            if (0xb < (ushort)(uVar8 - 1)) break;\n            uVar27 = *(uint *)(key_00 + 2);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n          }" { (expression_statement "uVar7 = *key_00 << 8 | *key_00 >> 8;" (assignment_expression "uVar7 = *key_00 << 8 | *key_00 >> 8" identifier = (binary_expression "*key_00 << 8 | *key_00 >> 8" (binary_expression "*key_00 << 8" (pointer_expression "*key_00" * identifier) << number_literal) | (binary_expression "*key_00 >> 8" (pointer_expression "*key_00" * identifier) >> number_literal))) ;) (expression_statement "uVar8 = key_00[1] << 8 | key_00[1] >> 8;" (assignment_expression "uVar8 = key_00[1] << 8 | key_00[1] >> 8" identifier = (binary_expression "key_00[1] << 8 | key_00[1] >> 8" (binary_expression "key_00[1] << 8" (subscript_expression "key_00[1]" identifier [ number_literal ]) << number_literal) | (binary_expression "key_00[1] >> 8" (subscript_expression "key_00[1]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (0xb < (ushort)(uVar8 - 1)) break;" if (parenthesized_expression "(0xb < (ushort)(uVar8 - 1))" ( (binary_expression "0xb < (ushort)(uVar8 - 1)" number_literal < (call_expression "(ushort)(uVar8 - 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar8 - 1)" ( (binary_expression "uVar8 - 1" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "uVar27 = *(uint *)(key_00 + 2);" (assignment_expression "uVar27 = *(uint *)(key_00 + 2)" identifier = (pointer_expression "*(uint *)(key_00 + 2)" * (cast_expression "(uint *)(key_00 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(key_00 + 2)" ( (binary_expression "key_00 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;" (assignment_expression "uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18" identifier = (binary_expression "uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18" (binary_expression "uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8" (binary_expression "uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8" (binary_expression "uVar27 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar27 & 0xff0000) >> 8" (parenthesized_expression "(uVar27 & 0xff0000)" ( (binary_expression "uVar27 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar27 & 0xff00) << 8" (parenthesized_expression "(uVar27 & 0xff00)" ( (binary_expression "uVar27 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar27 << 0x18" identifier << number_literal))) ;) }))) (expression_statement "local_1148 = (uint)uVar7 + local_1134;" (assignment_expression "local_1148 = (uint)uVar7 + local_1134" identifier = (binary_expression "(uint)uVar7 + local_1134" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier)) ;) (if_statement "if ((int)uVar27 < 0) break;" if (parenthesized_expression "((int)uVar27 < 0)" ( (binary_expression "(int)uVar27 < 0" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27;" (binary_expression "uVar22 = GetEXIFProperty::tag_bytes[uVar8] * uVar27" (subscript_expression "uVar22 = GetEXIFProperty::tag_bytes[uVar8]" (assignment_expression "uVar22 = GetEXIFProperty" identifier = identifier) (ERROR "::tag_bytes" : : identifier) [ identifier ]) * identifier) ;) (if_statement "if ((int)uVar22 < (int)uVar27) break;" if (parenthesized_expression "((int)uVar22 < (int)uVar27)" ( (binary_expression "(int)uVar22 < (int)uVar27" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if ((int)uVar22 < 5) {\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }" if (parenthesized_expression "((int)uVar22 < 5)" ( (binary_expression "(int)uVar22 < 5" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            local_1140 = key_00 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }\n            if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }" { (expression_statement "local_1140 = key_00 + 4;" (assignment_expression "local_1140 = key_00 + 4" identifier = (binary_expression "key_00 + 4" identifier + number_literal)) ;) (labeled_statement "LAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }" statement_identifier : (if_statement "if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }" if (parenthesized_expression "((local_1158 != 0) || (local_1160 == local_1148))" ( (binary_expression "(local_1158 != 0) || (local_1160 == local_1148)" (parenthesized_expression "(local_1158 != 0)" ( (binary_expression "local_1158 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_1160 == local_1148)" ( (binary_expression "local_1160 == local_1148" identifier == identifier) ))) )) (compound_statement "{\n              if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;\n              if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }\n              if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }\n            }" { (if_statement "if ((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)) break;" if (parenthesized_expression "((local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140))" ( (binary_expression "(local_1140 < puVar13) ||\n                 ((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)" (parenthesized_expression "(local_1140 < puVar13)" ( (binary_expression "local_1140 < puVar13" identifier < identifier) )) || (parenthesized_expression "((ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140)" ( (binary_expression "(ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13) <\n                  local_1140" (cast_expression "(ushort *)((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13)" ( (binary_expression "(uVar12 - GetEXIFProperty::tag_bytes[uVar8]) + (int)puVar13" (parenthesized_expression "(uVar12 - GetEXIFProperty::tag_bytes[uVar8])" ( (subscript_expression "uVar12 - GetEXIFProperty::tag_bytes[uVar8]" (binary_expression "uVar12 - GetEXIFProperty" identifier - identifier) (ERROR "::tag_bytes" : : identifier) [ identifier ]) )) + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < identifier) ))) )) (break_statement "break;" break ;)) (if_statement "if (uVar8 < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }" if (parenthesized_expression "(uVar8 < 0xd)" ( (binary_expression "uVar8 < 0xd" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();\n                return MVar16;\n              }" { comment comment (expression_statement "MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))();" (assignment_expression "MVar16 = (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))()" identifier = (call_expression "(*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))()" (parenthesized_expression "(*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)))" ( (pointer_expression "*(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4))" * (cast_expression "(code *)((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4))" ( (binary_expression "(int)&_GLOBAL_OFFSET_TABLE_ +\n                                   *(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)" (cast_expression "(int)&_GLOBAL_OFFSET_TABLE_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) + (pointer_expression "*(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)" * (cast_expression "(int *)(&DAT_002c05b8 + (uint)uVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002c05b8 + (uint)uVar8 * 4)" ( (binary_expression "&DAT_002c05b8 + (uint)uVar8 * 4" (pointer_expression "&DAT_002c05b8" & identifier) + (binary_expression "(uint)uVar8 * 4" (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return MVar16;" return identifier ;) })) (if_statement "if (local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)) {\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }" if (parenthesized_expression "(local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13))" ( (binary_expression "local_1140 <= (ushort *)((uVar12 - uVar22) + (int)puVar13)" identifier <= (cast_expression "(ushort *)((uVar12 - uVar22) + (int)puVar13)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar12 - uVar22) + (int)puVar13)" ( (binary_expression "(uVar12 - uVar22) + (int)puVar13" (parenthesized_expression "(uVar12 - uVar22)" ( (binary_expression "uVar12 - uVar22" identifier - identifier) )) + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n                pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);\n                iVar24 = 0;\n                if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }\n              }" { (expression_statement "pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1);" (assignment_expression "pcVar19 = (char *)AcquireQuantumMemory(uVar22 + 1,1)" identifier = (cast_expression "(char *)AcquireQuantumMemory(uVar22 + 1,1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(uVar22 + 1,1)" identifier (argument_list "(uVar22 + 1,1)" ( (binary_expression "uVar22 + 1" identifier + number_literal) , number_literal ))))) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (if_statement "if (pcVar19 != (char *)0x0) {\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }" if (parenthesized_expression "(pcVar19 != (char *)0x0)" ( (binary_expression "pcVar19 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }\n                  pcVar19[uVar22] = '\0';\n                  key = AcquireString(property);\n                  if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }\n                  if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }\n                  DestroyString(pcVar19);\n                  DestroyString(key);\n                  local_1104 = MagickTrue;\n                }" { (for_statement "for (; iVar24 < (int)uVar22; iVar24 = iVar24 + 1) {\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }" for ( ; (binary_expression "iVar24 < (int)uVar22" identifier < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ) (compound_statement "{\n                    pcVar19[iVar24] = '.';\n                    bVar3 = *(byte *)((int)local_1140 + iVar24);\n                    if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }\n                  }" { (expression_statement "pcVar19[iVar24] = '.';" (assignment_expression "pcVar19[iVar24] = '.'" (subscript_expression "pcVar19[iVar24]" identifier [ identifier ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "bVar3 = *(byte *)((int)local_1140 + iVar24);" (assignment_expression "bVar3 = *(byte *)((int)local_1140 + iVar24)" identifier = (pointer_expression "*(byte *)((int)local_1140 + iVar24)" * (cast_expression "(byte *)((int)local_1140 + iVar24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_1140 + iVar24)" ( (binary_expression "(int)local_1140 + iVar24" (cast_expression "(int)local_1140" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)) {\n                      pcVar19[iVar24] = bVar3;\n                    }" if (parenthesized_expression "(((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0))" ( (binary_expression "((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0) ||\n                       (bVar3 == 0)" (parenthesized_expression "((*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0)" ( (binary_expression "(*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40)" ( (binary_expression "*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1)" * (cast_expression "(byte *)((int)*ppuVar9 + (uint)bVar3 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar9 + (uint)bVar3 * 2 + 1)" ( (binary_expression "(int)*ppuVar9 + (uint)bVar3 * 2 + 1" (binary_expression "(int)*ppuVar9 + (uint)bVar3 * 2" (cast_expression "(int)*ppuVar9" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar9" * identifier)) + (binary_expression "(uint)bVar3 * 2" (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                      pcVar19[iVar24] = bVar3;\n                    }" { (expression_statement "pcVar19[iVar24] = bVar3;" (assignment_expression "pcVar19[iVar24] = bVar3" (subscript_expression "pcVar19[iVar24]" identifier [ identifier ]) = identifier) ;) })) })) (expression_statement "pcVar19[uVar22] = '\0';" (assignment_expression "pcVar19[uVar22] = '\0'" (subscript_expression "pcVar19[uVar22]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "key = AcquireString(property);" (assignment_expression "key = AcquireString(property)" identifier = (call_expression "AcquireString(property)" identifier (argument_list "(property)" ( identifier )))) ;) (if_statement "if (local_1158 == 1) {\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }" if (parenthesized_expression "(local_1158 == 1)" ( (binary_expression "local_1158 == 1" identifier == number_literal) )) (compound_statement "{\n                    if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }\n                    FormatLocaleString(key,0x1000,"%s",pcVar17);\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }\n                  }" { (if_statement "if (local_1148 == 1) {\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }\n                    else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }" if (parenthesized_expression "(local_1148 == 1)" ( (binary_expression "local_1148 == 1" identifier == number_literal) )) (compound_statement "{\n                      iVar24 = 0;\nLAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);\n                    }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00124bb8:\n                      pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);" statement_identifier : (expression_statement "pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64);" (assignment_expression "pcVar17 = (char *)(iVar24 * 0x28 + 0x2c0c64)" identifier = (cast_expression "(char *)(iVar24 * 0x28 + 0x2c0c64)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 * 0x28 + 0x2c0c64)" ( (binary_expression "iVar24 * 0x28 + 0x2c0c64" (binary_expression "iVar24 * 0x28" identifier * number_literal) + number_literal) )))) ;)) }) (else_clause "else {\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }" else (compound_statement "{\n                      pTVar25 = GetEXIFProperty::EXIFTag + 2;\n                      iVar24 = 0;\n                      sVar20 = 2;\n                      while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }\n                      pcVar17 = "unknown";\n                    }" { (expression_statement "pTVar25 = GetEXIFProperty::EXIFTag + 2;" (binary_expression "pTVar25 = GetEXIFProperty::EXIFTag + 2" (assignment_expression "pTVar25 = GetEXIFProperty" identifier = identifier) (ERROR "::EXIFTag" : : identifier) + number_literal) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "sVar20 = 2;" (assignment_expression "sVar20 = 2" identifier = number_literal) ;) (while_statement "while (iVar24 = iVar24 + 1, sVar20 != 0) {\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }" while (parenthesized_expression "(iVar24 = iVar24 + 1, sVar20 != 0)" ( (comma_expression "iVar24 = iVar24 + 1, sVar20 != 0" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) , (binary_expression "sVar20 != 0" identifier != number_literal)) )) (compound_statement "{\n                        if (sVar20 == local_1148) goto LAB_00124bb8;\n                        psVar5 = &pTVar25->tag;\n                        pTVar25 = pTVar25 + 1;\n                        sVar20 = *psVar5;\n                      }" { (if_statement "if (sVar20 == local_1148) goto LAB_00124bb8;" if (parenthesized_expression "(sVar20 == local_1148)" ( (binary_expression "sVar20 == local_1148" identifier == identifier) )) (goto_statement "goto LAB_00124bb8;" goto statement_identifier ;)) (expression_statement "psVar5 = &pTVar25->tag;" (assignment_expression "psVar5 = &pTVar25->tag" identifier = (pointer_expression "&pTVar25->tag" & (field_expression "pTVar25->tag" identifier -> field_identifier))) ;) (expression_statement "pTVar25 = pTVar25 + 1;" (assignment_expression "pTVar25 = pTVar25 + 1" identifier = (binary_expression "pTVar25 + 1" identifier + number_literal)) ;) (expression_statement "sVar20 = *psVar5;" (assignment_expression "sVar20 = *psVar5" identifier = (pointer_expression "*psVar5" * identifier)) ;) })) (expression_statement "pcVar17 = "unknown";" (assignment_expression "pcVar17 = "unknown"" identifier = (string_literal ""unknown"" " string_content ")) ;) }))) (expression_statement "FormatLocaleString(key,0x1000,"%s",pcVar17);" (call_expression "FormatLocaleString(key,0x1000,"%s",pcVar17)" identifier (argument_list "(key,0x1000,"%s",pcVar17)" ( identifier , number_literal , (string_literal ""%s"" " string_content ") , identifier ))) ;) (labeled_statement "LAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }" statement_identifier : (if_statement "if (local_112c == 2) {\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }" if (parenthesized_expression "(local_112c == 2)" ( (binary_expression "local_112c == 2" identifier == number_literal) )) (compound_statement "{\n                      SubstituteString(&key,"exif:","exif:thumbnail:");\n                    }" { (expression_statement "SubstituteString(&key,"exif:","exif:thumbnail:");" (call_expression "SubstituteString(&key,"exif:","exif:thumbnail:")" identifier (argument_list "(&key,"exif:","exif:thumbnail:")" ( (pointer_expression "&key" & identifier) , (string_literal ""exif:"" " string_content ") , (string_literal ""exif:thumbnail:"" " string_content ") ))) ;) }))) }) (else_clause "else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }" else (compound_statement "{\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }\n                    FormatLocaleString(key,0x1000,pcVar17,uVar27);\n                  }" { (if_statement "if (local_1158 != 2) goto LAB_00124b46;" if (parenthesized_expression "(local_1158 != 2)" ( (binary_expression "local_1158 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00124b46;" goto statement_identifier ;)) (if_statement "if (local_1148 < 0x10000) {\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }\n                    else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }" if (parenthesized_expression "(local_1148 < 0x10000)" ( (binary_expression "local_1148 < 0x10000" identifier < number_literal) )) (compound_statement "{\n                      pcVar17 = "#%04lx";\n                      uVar27 = local_1148;\n                    }" { (expression_statement "pcVar17 = "#%04lx";" (assignment_expression "pcVar17 = "#%04lx"" identifier = (string_literal ""#%04lx"" " string_content ")) ;) (expression_statement "uVar27 = local_1148;" (assignment_expression "uVar27 = local_1148" identifier = identifier) ;) }) (else_clause "else if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }" else (if_statement "if (local_1148 < 0x20000) {\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }\n                    else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }" if (parenthesized_expression "(local_1148 < 0x20000)" ( (binary_expression "local_1148 < 0x20000" identifier < number_literal) )) (compound_statement "{\n                      pcVar17 = "@%04lx";\n                      uVar27 = local_1148 & 0xffff;\n                    }" { (expression_statement "pcVar17 = "@%04lx";" (assignment_expression "pcVar17 = "@%04lx"" identifier = (string_literal ""@%04lx"" " string_content ")) ;) (expression_statement "uVar27 = local_1148 & 0xffff;" (assignment_expression "uVar27 = local_1148 & 0xffff" identifier = (binary_expression "local_1148 & 0xffff" identifier & number_literal)) ;) }) (else_clause "else {\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }" else (compound_statement "{\n                      pcVar17 = "unknown";\n                      uVar27 = extraout_ECX;\n                    }" { (expression_statement "pcVar17 = "unknown";" (assignment_expression "pcVar17 = "unknown"" identifier = (string_literal ""unknown"" " string_content ")) ;) (expression_statement "uVar27 = extraout_ECX;" (assignment_expression "uVar27 = extraout_ECX" identifier = identifier) ;) }))))) (expression_statement "FormatLocaleString(key,0x1000,pcVar17,uVar27);" (call_expression "FormatLocaleString(key,0x1000,pcVar17,uVar27)" identifier (argument_list "(key,0x1000,pcVar17,uVar27)" ( identifier , number_literal , identifier , identifier ))) ;) }))) (if_statement "if (((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)) {\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }" if (parenthesized_expression "(((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0))" ( (binary_expression "((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0) ||\n                     (pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)" (parenthesized_expression "((SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0)" ( (binary_expression "(SplayTreeInfo *)image->properties == (SplayTreeInfo *)0x0" (cast_expression "(SplayTreeInfo *)image->properties" ( (type_descriptor "SplayTreeInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "image->properties" identifier -> field_identifier)) == (cast_expression "(SplayTreeInfo *)0x0" ( (type_descriptor "SplayTreeInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0)" ( (comma_expression "pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key),\n                     pvVar18 == (void *)0x0" (assignment_expression "pvVar18 = GetValueFromSplayTree((SplayTreeInfo *)image->properties,key)" identifier = (call_expression "GetValueFromSplayTree((SplayTreeInfo *)image->properties,key)" identifier (argument_list "((SplayTreeInfo *)image->properties,key)" ( (cast_expression "(SplayTreeInfo *)image->properties" ( (type_descriptor "SplayTreeInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "image->properties" identifier -> field_identifier)) , identifier )))) , (binary_expression "pvVar18 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                    SetImageProperty(image,key,pcVar19,exception);\n                  }" { (expression_statement "SetImageProperty(image,key,pcVar19,exception);" (call_expression "SetImageProperty(image,key,pcVar19,exception)" identifier (argument_list "(image,key,pcVar19,exception)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "DestroyString(pcVar19);" (call_expression "DestroyString(pcVar19)" identifier (argument_list "(pcVar19)" ( identifier ))) ;) (expression_statement "DestroyString(key);" (call_expression "DestroyString(key)" identifier (argument_list "(key)" ( identifier ))) ;) (expression_statement "local_1104 = MagickTrue;" (assignment_expression "local_1104 = MagickTrue" identifier = identifier) ;) })) })) }))) (if_statement "if (((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)) {\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }" if (parenthesized_expression "(((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825))" ( (binary_expression "((local_1148 == 0x8769) || (local_1148 == 0xa005)) || (local_1148 == 0x8825)" (parenthesized_expression "((local_1148 == 0x8769) || (local_1148 == 0xa005))" ( (binary_expression "(local_1148 == 0x8769) || (local_1148 == 0xa005)" (parenthesized_expression "(local_1148 == 0x8769)" ( (binary_expression "local_1148 == 0x8769" identifier == number_literal) )) || (parenthesized_expression "(local_1148 == 0xa005)" ( (binary_expression "local_1148 == 0xa005" identifier == number_literal) ))) )) || (parenthesized_expression "(local_1148 == 0x8825)" ( (binary_expression "local_1148 == 0x8825" identifier == number_literal) ))) )) (compound_statement "{\n              uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);\n              if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }\n              break;\n            }" { (expression_statement "uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140);" (assignment_expression "uVar27 = ReadPropertySignedLong(local_114c,(uchar *)local_1140)" identifier = (call_expression "ReadPropertySignedLong(local_114c,(uchar *)local_1140)" identifier (argument_list "(local_114c,(uchar *)local_1140)" ( identifier , (cast_expression "(uchar *)local_1140" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (uVar27 < uVar12) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }" if (parenthesized_expression "(uVar27 < uVar12)" ( (binary_expression "uVar27 < uVar12" identifier < identifier) )) (compound_statement "{\n                if (0xd < local_112c) goto LAB_00124aba;\n                sVar28 = 0x10000;\n                if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }\n                iVar11 = local_112c + 1;\n                directory_stack[local_112c].directory = (uchar *)local_1110;\n                directory_stack[local_112c].entry = local_1150 + 1;\n                directory_stack[local_112c].offset = local_1134;\n                iVar26 = 0;\n                puVar23 = (uchar *)((int)puVar13 + uVar27);\n                goto LAB_00124c76;\n              }" { (if_statement "if (0xd < local_112c) goto LAB_00124aba;" if (parenthesized_expression "(0xd < local_112c)" ( (binary_expression "0xd < local_112c" number_literal < identifier) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) (expression_statement "sVar28 = 0x10000;" (assignment_expression "sVar28 = 0x10000" identifier = number_literal) ;) (if_statement "if (local_1148 != 0x8825) {\n                  sVar28 = 0;\n                }" if (parenthesized_expression "(local_1148 != 0x8825)" ( (binary_expression "local_1148 != 0x8825" identifier != number_literal) )) (compound_statement "{\n                  sVar28 = 0;\n                }" { (expression_statement "sVar28 = 0;" (assignment_expression "sVar28 = 0" identifier = number_literal) ;) })) (expression_statement "iVar11 = local_112c + 1;" (assignment_expression "iVar11 = local_112c + 1" identifier = (binary_expression "local_112c + 1" identifier + number_literal)) ;) (expression_statement "directory_stack[local_112c].directory = (uchar *)local_1110;" (assignment_expression "directory_stack[local_112c].directory = (uchar *)local_1110" (field_expression "directory_stack[local_112c].directory" (subscript_expression "directory_stack[local_112c]" identifier [ identifier ]) . field_identifier) = (cast_expression "(uchar *)local_1110" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "directory_stack[local_112c].entry = local_1150 + 1;" (assignment_expression "directory_stack[local_112c].entry = local_1150 + 1" (field_expression "directory_stack[local_112c].entry" (subscript_expression "directory_stack[local_112c]" identifier [ identifier ]) . field_identifier) = (binary_expression "local_1150 + 1" identifier + number_literal)) ;) (expression_statement "directory_stack[local_112c].offset = local_1134;" (assignment_expression "directory_stack[local_112c].offset = local_1134" (field_expression "directory_stack[local_112c].offset" (subscript_expression "directory_stack[local_112c]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "puVar23 = (uchar *)((int)puVar13 + uVar27);" (assignment_expression "puVar23 = (uchar *)((int)puVar13 + uVar27)" identifier = (cast_expression "(uchar *)((int)puVar13 + uVar27)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + uVar27)" ( (binary_expression "(int)puVar13 + uVar27" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (goto_statement "goto LAB_00124c76;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) }) (else_clause "else {\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }" else (compound_statement "{\n            uVar27 = *(uint *)(key_00 + 4);\n            uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;\n            if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }\n            if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }\n          }" { (expression_statement "uVar27 = *(uint *)(key_00 + 4);" (assignment_expression "uVar27 = *(uint *)(key_00 + 4)" identifier = (pointer_expression "*(uint *)(key_00 + 4)" * (cast_expression "(uint *)(key_00 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(key_00 + 4)" ( (binary_expression "key_00 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18;" (assignment_expression "uVar27 = uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18" identifier = (binary_expression "uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8 |\n                     uVar27 << 0x18" (binary_expression "uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8 | (uVar27 & 0xff00) << 8" (binary_expression "uVar27 >> 0x18 | (uVar27 & 0xff0000) >> 8" (binary_expression "uVar27 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar27 & 0xff0000) >> 8" (parenthesized_expression "(uVar27 & 0xff0000)" ( (binary_expression "uVar27 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar27 & 0xff00) << 8" (parenthesized_expression "(uVar27 & 0xff00)" ( (binary_expression "uVar27 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar27 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_114c == LSBEndian) {\n              uVar27 = *(uint *)(key_00 + 4);\n            }" if (parenthesized_expression "(local_114c == LSBEndian)" ( (binary_expression "local_114c == LSBEndian" identifier == identifier) )) (compound_statement "{\n              uVar27 = *(uint *)(key_00 + 4);\n            }" { (expression_statement "uVar27 = *(uint *)(key_00 + 4);" (assignment_expression "uVar27 = *(uint *)(key_00 + 4)" identifier = (pointer_expression "*(uint *)(key_00 + 4)" * (cast_expression "(uint *)(key_00 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(key_00 + 4)" ( (binary_expression "key_00 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if ((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))) {\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }" if (parenthesized_expression "((((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27)))" ( (binary_expression "(((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)) &&\n               (!CARRY4(uVar22,uVar27))" (parenthesized_expression "(((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12))" ( (binary_expression "((-1 < (int)uVar27) && (uVar27 < uVar12)) && (uVar22 + uVar27 <= uVar12)" (parenthesized_expression "((-1 < (int)uVar27) && (uVar27 < uVar12))" ( (binary_expression "(-1 < (int)uVar27) && (uVar27 < uVar12)" (parenthesized_expression "(-1 < (int)uVar27)" ( (binary_expression "-1 < (int)uVar27" number_literal < (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar27 < uVar12)" ( (binary_expression "uVar27 < uVar12" identifier < identifier) ))) )) && (parenthesized_expression "(uVar22 + uVar27 <= uVar12)" ( (binary_expression "uVar22 + uVar27 <= uVar12" (binary_expression "uVar22 + uVar27" identifier + identifier) <= identifier) ))) )) && (parenthesized_expression "(!CARRY4(uVar22,uVar27))" ( (unary_expression "!CARRY4(uVar22,uVar27)" ! (call_expression "CARRY4(uVar22,uVar27)" identifier (argument_list "(uVar22,uVar27)" ( identifier , identifier )))) ))) )) (compound_statement "{\n              local_1140 = (ushort *)(uVar27 + (int)puVar13);\n              goto LAB_001241d4;\n            }" { (expression_statement "local_1140 = (ushort *)(uVar27 + (int)puVar13);" (assignment_expression "local_1140 = (ushort *)(uVar27 + (int)puVar13)" identifier = (cast_expression "(ushort *)(uVar27 + (int)puVar13)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar27 + (int)puVar13)" ( (binary_expression "uVar27 + (int)puVar13" identifier + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (goto_statement "goto LAB_001241d4;" goto statement_identifier ;) })) }))) (expression_statement "local_1150 = local_1150 + 1;" (assignment_expression "local_1150 = local_1150 + 1" identifier = (binary_expression "local_1150 + 1" identifier + number_literal)) ;) (if_statement "if (uVar14 == local_1150) break;" if (parenthesized_expression "(uVar14 == local_1150)" ( (binary_expression "uVar14 == local_1150" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe));" (assignment_expression "key_00 = (ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe))" identifier = (cast_expression "(ushort *)((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key_00 + (int)((int)local_1110 + iVar26 + 0xe))" ( (binary_expression "(int)key_00 + (int)((int)local_1110 + iVar26 + 0xe)" (cast_expression "(int)key_00" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)((int)local_1110 + iVar26 + 0xe)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)local_1110 + iVar26 + 0xe)" ( (binary_expression "(int)local_1110 + iVar26 + 0xe" (binary_expression "(int)local_1110 + iVar26" (cast_expression "(int)local_1110" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) )))) ;) (expression_statement "bVar29 = local_1144 <= puVar1;" (assignment_expression "bVar29 = local_1144 <= puVar1" identifier = (binary_expression "local_1144 <= puVar1" identifier <= identifier)) ;) (expression_statement "local_1144 = local_1144 + 6;" (assignment_expression "local_1144 = local_1144 + 6" identifier = (binary_expression "local_1144 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar29)" ( identifier )) ;) })) })) (if_statement "if (local_112c != 0) goto LAB_00124aba;" if (parenthesized_expression "(local_112c != 0)" ( (binary_expression "local_112c != 0" identifier != number_literal) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00124b97;" goto statement_identifier ;) (while_statement "while (iVar26 = iVar26 + 1, iVar26 < iVar11) {\nLAB_00124c76:\n    if (directory_stack[iVar26].directory == puVar23) {\n      puVar23 = directory_stack[iVar26].directory;\n      if (iVar26 < iVar11) goto LAB_00124aba;\n      break;\n    }\n  }" while (parenthesized_expression "(iVar26 = iVar26 + 1, iVar26 < iVar11)" ( (comma_expression "iVar26 = iVar26 + 1, iVar26 < iVar11" (assignment_expression "iVar26 = iVar26 + 1" identifier = (binary_expression "iVar26 + 1" identifier + number_literal)) , (binary_expression "iVar26 < iVar11" identifier < identifier)) )) (compound_statement "{\nLAB_00124c76:\n    if (directory_stack[iVar26].directory == puVar23) {\n      puVar23 = directory_stack[iVar26].directory;\n      if (iVar26 < iVar11) goto LAB_00124aba;\n      break;\n    }\n  }" { (labeled_statement "LAB_00124c76:\n    if (directory_stack[iVar26].directory == puVar23) {\n      puVar23 = directory_stack[iVar26].directory;\n      if (iVar26 < iVar11) goto LAB_00124aba;\n      break;\n    }" statement_identifier : (if_statement "if (directory_stack[iVar26].directory == puVar23) {\n      puVar23 = directory_stack[iVar26].directory;\n      if (iVar26 < iVar11) goto LAB_00124aba;\n      break;\n    }" if (parenthesized_expression "(directory_stack[iVar26].directory == puVar23)" ( (binary_expression "directory_stack[iVar26].directory == puVar23" (field_expression "directory_stack[iVar26].directory" (subscript_expression "directory_stack[iVar26]" identifier [ identifier ]) . field_identifier) == identifier) )) (compound_statement "{\n      puVar23 = directory_stack[iVar26].directory;\n      if (iVar26 < iVar11) goto LAB_00124aba;\n      break;\n    }" { (expression_statement "puVar23 = directory_stack[iVar26].directory;" (assignment_expression "puVar23 = directory_stack[iVar26].directory" identifier = (field_expression "directory_stack[iVar26].directory" (subscript_expression "directory_stack[iVar26]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if (iVar26 < iVar11) goto LAB_00124aba;" if (parenthesized_expression "(iVar26 < iVar11)" ( (binary_expression "iVar26 < iVar11" identifier < identifier) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) (break_statement "break;" break ;) }))) })) (expression_statement "directory_stack[iVar11].directory = puVar23;" (assignment_expression "directory_stack[iVar11].directory = puVar23" (field_expression "directory_stack[iVar11].directory" (subscript_expression "directory_stack[iVar11]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "directory_stack[iVar11].offset = sVar28;" (assignment_expression "directory_stack[iVar11].offset = sVar28" (field_expression "directory_stack[iVar11].offset" (subscript_expression "directory_stack[iVar11]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "directory_stack[iVar11].entry = 0;" (assignment_expression "directory_stack[iVar11].entry = 0" (field_expression "directory_stack[iVar11].entry" (subscript_expression "directory_stack[iVar11]" identifier [ identifier ]) . field_identifier) = number_literal) ;) (expression_statement "iVar11 = local_112c + 2;" (assignment_expression "iVar11 = local_112c + 2" identifier = (binary_expression "local_112c + 2" identifier + number_literal)) ;) (if_statement "if (((local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&\n      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0)) && ((iVar11 < 0xe && (uVar14 < uVar12)))) {\n    directory_stack[iVar11].entry = 0;\n    directory_stack[iVar11].directory = (uchar *)(uVar14 + (int)puVar13);\n    directory_stack[iVar11].offset = sVar28;\n    iVar11 = local_112c + 3;\n  }" if (parenthesized_expression "(((local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&\n      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0)) && ((iVar11 < 0xe && (uVar14 < uVar12))))" ( (binary_expression "((local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&\n      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0)) && ((iVar11 < 0xe && (uVar14 < uVar12)))" (parenthesized_expression "((local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&\n      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0))" ( (binary_expression "(local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)) &&\n      (uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0)" (parenthesized_expression "(local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12))" ( (binary_expression "local_1110 + uVar14 * 6 + 3 <= (ushort *)((int)puVar13 + uVar12)" (binary_expression "local_1110 + uVar14 * 6 + 3" (binary_expression "local_1110 + uVar14 * 6" identifier + (binary_expression "uVar14 * 6" identifier * number_literal)) + number_literal) <= (cast_expression "(ushort *)((int)puVar13 + uVar12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + uVar12)" ( (binary_expression "(int)puVar13 + uVar12" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) )) && (parenthesized_expression "(uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0)" ( (comma_expression "uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1)),\n      uVar14 != 0" (assignment_expression "uVar14 = ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1))" identifier = (call_expression "ReadPropertySignedLong(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1))" identifier (argument_list "(local_114c,(uchar *)(local_1110 + uVar14 * 6 + 1))" ( identifier , (cast_expression "(uchar *)(local_1110 + uVar14 * 6 + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_1110 + uVar14 * 6 + 1)" ( (binary_expression "local_1110 + uVar14 * 6 + 1" (binary_expression "local_1110 + uVar14 * 6" identifier + (binary_expression "uVar14 * 6" identifier * number_literal)) + number_literal) ))) )))) , (binary_expression "uVar14 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((iVar11 < 0xe && (uVar14 < uVar12)))" ( (parenthesized_expression "(iVar11 < 0xe && (uVar14 < uVar12))" ( (binary_expression "iVar11 < 0xe && (uVar14 < uVar12)" (binary_expression "iVar11 < 0xe" identifier < number_literal) && (parenthesized_expression "(uVar14 < uVar12)" ( (binary_expression "uVar14 < uVar12" identifier < identifier) ))) )) ))) )) (compound_statement "{\n    directory_stack[iVar11].entry = 0;\n    directory_stack[iVar11].directory = (uchar *)(uVar14 + (int)puVar13);\n    directory_stack[iVar11].offset = sVar28;\n    iVar11 = local_112c + 3;\n  }" { (expression_statement "directory_stack[iVar11].entry = 0;" (assignment_expression "directory_stack[iVar11].entry = 0" (field_expression "directory_stack[iVar11].entry" (subscript_expression "directory_stack[iVar11]" identifier [ identifier ]) . field_identifier) = number_literal) ;) (expression_statement "directory_stack[iVar11].directory = (uchar *)(uVar14 + (int)puVar13);" (assignment_expression "directory_stack[iVar11].directory = (uchar *)(uVar14 + (int)puVar13)" (field_expression "directory_stack[iVar11].directory" (subscript_expression "directory_stack[iVar11]" identifier [ identifier ]) . field_identifier) = (cast_expression "(uchar *)(uVar14 + (int)puVar13)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar14 + (int)puVar13)" ( (binary_expression "uVar14 + (int)puVar13" identifier + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "directory_stack[iVar11].offset = sVar28;" (assignment_expression "directory_stack[iVar11].offset = sVar28" (field_expression "directory_stack[iVar11].offset" (subscript_expression "directory_stack[iVar11]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "iVar11 = local_112c + 3;" (assignment_expression "iVar11 = local_112c + 3" identifier = (binary_expression "local_112c + 3" identifier + number_literal)) ;) })) (labeled_statement "LAB_00124aba:\n  local_112c = iVar11;" statement_identifier : (expression_statement "local_112c = iVar11;" (assignment_expression "local_112c = iVar11" identifier = identifier) ;)) (expression_statement "local_112c = local_112c + -1;" (assignment_expression "local_112c = local_112c + -1" identifier = (binary_expression "local_112c + -1" identifier + number_literal)) ;) (expression_statement "local_1110 = (ushort *)directory_stack[local_112c].directory;" (assignment_expression "local_1110 = (ushort *)directory_stack[local_112c].directory" identifier = (cast_expression "(ushort *)directory_stack[local_112c].directory" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "directory_stack[local_112c].directory" (subscript_expression "directory_stack[local_112c]" identifier [ identifier ]) . field_identifier))) ;) (expression_statement "local_1150 = directory_stack[local_112c].entry;" (assignment_expression "local_1150 = directory_stack[local_112c].entry" identifier = (field_expression "directory_stack[local_112c].entry" (subscript_expression "directory_stack[local_112c]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "local_1134 = directory_stack[local_112c].offset;" (assignment_expression "local_1134 = directory_stack[local_112c].offset" identifier = (field_expression "directory_stack[local_112c].offset" (subscript_expression "directory_stack[local_112c]" identifier [ identifier ]) . field_identifier)) ;) (goto_statement "goto LAB_00124153;" goto statement_identifier ;) (labeled_statement "LAB_00124b97:\n  DestroySplayTree(splay_tree);" statement_identifier : (expression_statement "DestroySplayTree(splay_tree);" (call_expression "DestroySplayTree(splay_tree)" identifier (argument_list "(splay_tree)" ( identifier ))) ;)) (goto_statement "goto LAB_00123f5a;" goto statement_identifier ;) })))
(translation_unit "undefined4 __regparm3 FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  char cVar3;\n  uint uVar4;\n  ushort uVar5;\n  ushort uVar6;\n  int iVar7;\n  ushort **ppuVar8;\n  size_t sVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  undefined4 uVar13;\n  ushort *puVar14;\n  int iVar15;\n  ushort *puVar16;\n  uint uVar17;\n  Elf32_Ehdr *extraout_ECX;\n  char *pcVar18;\n  uint uVar19;\n  int iVar20;\n  undefined4 *puVar21;\n  ushort *puVar22;\n  Elf32_Ehdr *pEVar23;\n  uint uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  Elf32_Ehdr *local_1160;\n  int local_1158;\n  uint local_1150;\n  int local_114c;\n  Elf32_Ehdr *local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  uint local_1134;\n  int local_112c;\n  ushort *local_1110;\n  undefined4 local_1104;\n  undefined4 local_10e4;\n  uint local_10e0 [48];\n  undefined1 local_1020;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x123e2d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar7 = GetImageProfile(param_1,&DAT_002c0184);\n  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = 0;\nLAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    \n  FUN_0029eab0();\nLAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }\n  local_10e0[iVar7 * 3] = (uint)pcVar18;\n  local_10e0[iVar7 * 3 + 2] = uVar24;\n  local_10e0[iVar7 * 3 + 1] = 0;\n  iVar7 = local_112c + 2;\n  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar7;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)local_10e0[local_112c * 3];\n  local_1150 = local_10e0[local_112c * 3 + 1];\n  local_1134 = local_10e0[local_112c * 3 + 2];\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(uVar13);\n  goto LAB_00123f5a;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  char cVar3;\n  uint uVar4;\n  ushort uVar5;\n  ushort uVar6;\n  int iVar7;\n  ushort **ppuVar8;\n  size_t sVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  undefined4 uVar13;\n  ushort *puVar14;\n  int iVar15;\n  ushort *puVar16;\n  uint uVar17;\n  Elf32_Ehdr *extraout_ECX;\n  char *pcVar18;\n  uint uVar19;\n  int iVar20;\n  undefined4 *puVar21;\n  ushort *puVar22;\n  Elf32_Ehdr *pEVar23;\n  uint uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  Elf32_Ehdr *local_1160;\n  int local_1158;\n  uint local_1150;\n  int local_114c;\n  Elf32_Ehdr *local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  uint local_1134;\n  int local_112c;\n  ushort *local_1110;\n  undefined4 local_1104;\n  undefined4 local_10e4;\n  uint local_10e0 [48];\n  undefined1 local_1020;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x123e2d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar7 = GetImageProfile(param_1,&DAT_002c0184);\n  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = 0;\nLAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    \n  FUN_0029eab0();\nLAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }\n  local_10e0[iVar7 * 3] = (uint)pcVar18;\n  local_10e0[iVar7 * 3 + 2] = uVar24;\n  local_10e0[iVar7 * 3 + 1] = 0;\n  iVar7 = local_112c + 2;\n  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar7;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)local_10e0[local_112c * 3];\n  local_1150 = local_10e0[local_112c * 3 + 1];\n  local_1134 = local_10e0[local_112c * 3 + 2];\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(uVar13);\n  goto LAB_00123f5a;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)" identifier (parameter_list "(int param_1,byte *param_2,undefined4 param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  ushort *puVar1;\n  byte bVar2;\n  char cVar3;\n  uint uVar4;\n  ushort uVar5;\n  ushort uVar6;\n  int iVar7;\n  ushort **ppuVar8;\n  size_t sVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  undefined4 uVar13;\n  ushort *puVar14;\n  int iVar15;\n  ushort *puVar16;\n  uint uVar17;\n  Elf32_Ehdr *extraout_ECX;\n  char *pcVar18;\n  uint uVar19;\n  int iVar20;\n  undefined4 *puVar21;\n  ushort *puVar22;\n  Elf32_Ehdr *pEVar23;\n  uint uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  Elf32_Ehdr *local_1160;\n  int local_1158;\n  uint local_1150;\n  int local_114c;\n  Elf32_Ehdr *local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  uint local_1134;\n  int local_112c;\n  ushort *local_1110;\n  undefined4 local_1104;\n  undefined4 local_10e4;\n  uint local_10e0 [48];\n  undefined1 local_1020;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x123e2d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar7 = GetImageProfile(param_1,&DAT_002c0184);\n  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = 0;\nLAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    \n  FUN_0029eab0();\nLAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }\n  local_10e0[iVar7 * 3] = (uint)pcVar18;\n  local_10e0[iVar7 * 3 + 2] = uVar24;\n  local_10e0[iVar7 * 3 + 1] = 0;\n  iVar7 = local_112c + 2;\n  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar7;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)local_10e0[local_112c * 3];\n  local_1150 = local_10e0[local_112c * 3 + 1];\n  local_1134 = local_10e0[local_112c * 3 + 2];\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(uVar13);\n  goto LAB_00123f5a;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "ushort uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "ushort **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "ushort *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "ushort *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "Elf32_Ehdr *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "undefined4 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "ushort *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "Elf32_Ehdr *pEVar23;" type_identifier (pointer_declarator "*pEVar23" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar25;" primitive_type identifier ;) (declaration "Elf32_Ehdr *local_1160;" type_identifier (pointer_declarator "*local_1160" * identifier) ;) (declaration "int local_1158;" primitive_type identifier ;) (declaration "uint local_1150;" type_identifier identifier ;) (declaration "int local_114c;" primitive_type identifier ;) (declaration "Elf32_Ehdr *local_1148;" type_identifier (pointer_declarator "*local_1148" * identifier) ;) (declaration "ushort *local_1144;" type_identifier (pointer_declarator "*local_1144" * identifier) ;) (declaration "ushort *local_1140;" type_identifier (pointer_declarator "*local_1140" * identifier) ;) (declaration "uint local_1134;" type_identifier identifier ;) (declaration "int local_112c;" primitive_type identifier ;) (declaration "ushort *local_1110;" type_identifier (pointer_declarator "*local_1110" * identifier) ;) (declaration "undefined4 local_1104;" type_identifier identifier ;) (declaration "undefined4 local_10e4;" type_identifier identifier ;) (declaration "uint local_10e0 [48];" type_identifier (array_declarator "local_10e0 [48]" identifier [ number_literal ]) ;) (declaration "undefined1 local_1020;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x123e2d;" (assignment_expression "uStack_14 = 0x123e2d" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = GetImageProfile(param_1,&DAT_002c0184);" (assignment_expression "iVar7 = GetImageProfile(param_1,&DAT_002c0184)" identifier = (call_expression "GetImageProfile(param_1,&DAT_002c0184)" identifier (argument_list "(param_1,&DAT_002c0184)" ( identifier , (pointer_expression "&DAT_002c0184" & identifier) )))) ;) (if_statement "if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }" if (parenthesized_expression "(((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0))" ( (binary_expression "((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)" (parenthesized_expression "((iVar7 != 0) && (param_2 != (byte *)0x0))" ( (binary_expression "(iVar7 != 0) && (param_2 != (byte *)0x0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(bVar2 = *param_2, bVar2 != 0)" ( (comma_expression "bVar2 = *param_2, bVar2 != 0" (assignment_expression "bVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) , (binary_expression "bVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (while_statement "while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }" while (parenthesized_expression "((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" * (cast_expression "(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" ( (binary_expression "(int)*ppuVar8 + (uint)bVar2 * 2 + 1" (binary_expression "(int)*ppuVar8 + (uint)bVar2 * 2" (cast_expression "(int)*ppuVar8" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }" { (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *param_2;" (assignment_expression "bVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (expression_statement "sVar9 = strlen((char *)param_2);" (assignment_expression "sVar9 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }" if (parenthesized_expression "(5 < sVar9)" ( (binary_expression "5 < sVar9" number_literal < identifier) )) (compound_statement "{\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }" { (expression_statement "bVar2 = param_2[5];" (assignment_expression "bVar2 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (if_statement "if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" if (parenthesized_expression "(bVar2 == 0x23)" ( (binary_expression "bVar2 == 0x23" identifier == number_literal) )) (compound_statement "{\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }" { (labeled_statement "LAB_00123edc:\n        param_2 = param_2 + 6;" statement_identifier : (expression_statement "param_2 = param_2 + 6;" (assignment_expression "param_2 = param_2 + 6" identifier = (binary_expression "param_2 + 6" identifier + number_literal)) ;)) (expression_statement "sVar9 = strlen((char *)param_2);" (assignment_expression "sVar9 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }" if (parenthesized_expression "(sVar9 == 4)" ( (binary_expression "sVar9 == 4" identifier == number_literal) )) (compound_statement "{\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }" { (expression_statement "local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40)" identifier = (cast_expression "(Elf32_Ehdr *)(uint)(bVar2 == 0x40)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(bVar2 == 0x40)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 == 0x40)" ( (binary_expression "bVar2 == 0x40" identifier == number_literal) ))))) ;) (do_statement "do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);" do (compound_statement "{\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          }" { (expression_statement "iVar10 = (int)(char)*param_2;" (assignment_expression "iVar10 = (int)(char)*param_2" identifier = (cast_expression "(int)(char)*param_2" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)))) ;) (expression_statement "uVar19 = (int)local_1160 << 4;" (assignment_expression "uVar19 = (int)local_1160 << 4" identifier = (binary_expression "(int)local_1160 << 4" (cast_expression "(int)local_1160" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (if_statement "if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" if (parenthesized_expression "(iVar10 - 0x30U < 10)" ( (binary_expression "iVar10 - 0x30U < 10" (binary_expression "iVar10 - 0x30U" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }" { (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U)" identifier = (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 | iVar10 - 0x30U)" ( (binary_expression "uVar19 | iVar10 - 0x30U" identifier | (binary_expression "iVar10 - 0x30U" identifier - number_literal)) )))) ;) }) (else_clause "else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" else (if_statement "if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" if (parenthesized_expression "(iVar10 - 0x41U < 6)" ( (binary_expression "iVar10 - 0x41U < 6" (binary_expression "iVar10 - 0x41U" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }" { (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U)" identifier = (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 | iVar10 - 0x37U)" ( (binary_expression "uVar19 | iVar10 - 0x37U" identifier | (binary_expression "iVar10 - 0x37U" identifier - number_literal)) )))) ;) }) (else_clause "else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" else (compound_statement "{\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" { (if_statement "if (5 < iVar10 - 0x61U) goto LAB_00123f58;" if (parenthesized_expression "(5 < iVar10 - 0x61U)" ( (binary_expression "5 < iVar10 - 0x61U" number_literal < (binary_expression "iVar10 - 0x61U" identifier - number_literal)) )) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;)) (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U)" identifier = (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 | iVar10 - 0x57U)" ( (binary_expression "uVar19 | iVar10 - 0x57U" identifier | (binary_expression "iVar10 - 0x57U" identifier - number_literal)) )))) ;) }))))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*param_2 != 0)" ( (binary_expression "*param_2 != 0" (pointer_expression "*param_2" * identifier) != number_literal) )) ;) (labeled_statement "LAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" statement_identifier : (if_statement "if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" if (parenthesized_expression "(local_1160 != (Elf32_Ehdr *)0xffffffff)" ( (binary_expression "local_1160 != (Elf32_Ehdr *)0xffffffff" identifier != (cast_expression "(Elf32_Ehdr *)0xffffffff" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" { (expression_statement "local_1158 = 0;" (assignment_expression "local_1158 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00123f38;" goto statement_identifier ;) }))) })) }) (else_clause "else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" else (compound_statement "{\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" { (if_statement "if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" if (parenthesized_expression "((char)bVar2 < '$')" ( (binary_expression "(char)bVar2 < '$'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'$'" ' character ')) )) (compound_statement "{\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }" { (expression_statement "local_1158 = 2;" (assignment_expression "local_1158 = 2" identifier = number_literal) ;) (expression_statement "local_1160 = (Elf32_Ehdr *)0x0;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x0" identifier = (cast_expression "(Elf32_Ehdr *)0x0" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }" if (parenthesized_expression "(bVar2 != 0x21)" ( (binary_expression "bVar2 != 0x21" identifier != number_literal) )) (compound_statement "{\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }" { (labeled_statement "LAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;" statement_identifier : (expression_statement "local_1160 = (Elf32_Ehdr *)0x1;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x1" identifier = (cast_expression "(Elf32_Ehdr *)0x1" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar18 = "exif:InteroperabilityIndex";" (assignment_expression "pcVar18 = "exif:InteroperabilityIndex"" identifier = (string_literal ""exif:InteroperabilityIndex"" " string_content ")) ;) (do_statement "do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);" do (compound_statement "{\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            }" { (expression_statement "iVar10 = LocaleCompare(pcVar18,param_2);" (assignment_expression "iVar10 = LocaleCompare(pcVar18,param_2)" identifier = (call_expression "LocaleCompare(pcVar18,param_2)" identifier (argument_list "(pcVar18,param_2)" ( identifier , identifier )))) ;) (if_statement "if (iVar10 == 0) goto LAB_00123f24;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00123f24;" goto statement_identifier ;)) (expression_statement "local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);" (assignment_expression "local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24)" identifier = (pointer_expression "*(Elf32_Ehdr **)(pcVar18 + 0x24)" * (cast_expression "(Elf32_Ehdr **)(pcVar18 + 0x24)" ( (type_descriptor "Elf32_Ehdr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x24)" ( (binary_expression "pcVar18 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = pcVar18 + 0x28;" (assignment_expression "pcVar18 = pcVar18 + 0x28" identifier = (binary_expression "pcVar18 + 0x28" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_1160 != (Elf32_Ehdr *)0x0)" ( (binary_expression "local_1160 != (Elf32_Ehdr *)0x0" identifier != (cast_expression "(Elf32_Ehdr *)0x0" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;) })) }) (else_clause "else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" else (compound_statement "{\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" { (if_statement "if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }" if (parenthesized_expression "(bVar2 != 0x2a)" ( (binary_expression "bVar2 != 0x2a" identifier != number_literal) )) (compound_statement "{\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }" { (if_statement "if (bVar2 != 0x40) goto LAB_00123f95;" if (parenthesized_expression "(bVar2 != 0x40)" ( (binary_expression "bVar2 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_00123f95;" goto statement_identifier ;)) (goto_statement "goto LAB_00123edc;" goto statement_identifier ;) })) (expression_statement "local_1158 = 1;" (assignment_expression "local_1158 = 1" identifier = number_literal) ;) (expression_statement "local_1160 = (Elf32_Ehdr *)0x0;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x0" identifier = (cast_expression "(Elf32_Ehdr *)0x0" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);" statement_identifier : (expression_statement "uVar19 = GetStringInfoLength(iVar7);" (assignment_expression "uVar19 = GetStringInfoLength(iVar7)" identifier = (call_expression "GetStringInfoLength(iVar7)" identifier (argument_list "(iVar7)" ( identifier )))) ;)) (if_statement "if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }" if (parenthesized_expression "(5 < uVar19)" ( (binary_expression "5 < uVar19" number_literal < identifier) )) (compound_statement "{\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }" { (expression_statement "puVar11 = (ushort *)GetStringInfoDatum(iVar7);" (assignment_expression "puVar11 = (ushort *)GetStringInfoDatum(iVar7)" identifier = (cast_expression "(ushort *)GetStringInfoDatum(iVar7)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetStringInfoDatum(iVar7)" identifier (argument_list "(iVar7)" ( identifier ))))) ;) (do_statement "do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);" do (compound_statement "{\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          }" { (expression_statement "cVar3 = (char)*puVar11;" (assignment_expression "cVar3 = (char)*puVar11" identifier = (cast_expression "(char)*puVar11" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "puVar16 = puVar11;" (assignment_expression "puVar16 = puVar11" identifier = identifier) ;) (expression_statement "uVar4 = uVar19;" (assignment_expression "uVar4 = uVar19" identifier = identifier) ;) (while_statement "while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }" while (parenthesized_expression "(uVar19 = uVar4 - 1, cVar3 != 'E')" ( (comma_expression "uVar19 = uVar4 - 1, cVar3 != 'E'" (assignment_expression "uVar19 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) , (binary_expression "cVar3 != 'E'" identifier != (char_literal "'E'" ' character '))) )) (compound_statement "{\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }" { (if_statement "if (uVar19 == 0) goto LAB_00123f58;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00123f58;" goto statement_identifier ;)) (expression_statement "puVar16 = (ushort *)((int)puVar16 + 1);" (assignment_expression "puVar16 = (ushort *)((int)puVar16 + 1)" identifier = (cast_expression "(ushort *)((int)puVar16 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 1)" ( (binary_expression "(int)puVar16 + 1" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar4 = uVar19;" (assignment_expression "uVar4 = uVar19" identifier = identifier) ;) (expression_statement "cVar3 = *(char *)puVar16;" (assignment_expression "cVar3 = *(char *)puVar16" identifier = (pointer_expression "*(char *)puVar16" * (cast_expression "(char *)puVar16" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar4 - 2;" (assignment_expression "uVar19 = uVar4 - 2" identifier = (binary_expression "uVar4 - 2" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }" if (parenthesized_expression "(*(char *)((int)puVar16 + 1) == 'x')" ( (binary_expression "*(char *)((int)puVar16 + 1) == 'x'" (pointer_expression "*(char *)((int)puVar16 + 1)" * (cast_expression "(char *)((int)puVar16 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 1)" ( (binary_expression "(int)puVar16 + 1" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'x'" ' character ')) )) (compound_statement "{\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar4 - 3;" (assignment_expression "uVar19 = uVar4 - 3" identifier = (binary_expression "uVar4 - 3" identifier - number_literal)) ;) (if_statement "if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" if (parenthesized_expression "((char)puVar16[1] == 'i')" ( (binary_expression "(char)puVar16[1] == 'i'" (cast_expression "(char)puVar16[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar16[1]" identifier [ number_literal ])) == (char_literal "'i'" ' character ')) )) (compound_statement "{\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar4 - 4;" (assignment_expression "uVar19 = uVar4 - 4" identifier = (binary_expression "uVar4 - 4" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }" if (parenthesized_expression "(*(char *)((int)puVar16 + 3) == 'f')" ( (binary_expression "*(char *)((int)puVar16 + 3) == 'f'" (pointer_expression "*(char *)((int)puVar16 + 3)" * (cast_expression "(char *)((int)puVar16 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 3)" ( (binary_expression "(int)puVar16 + 3" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'f'" ' character ')) )) (compound_statement "{\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar4 - 5;" (assignment_expression "uVar19 = uVar4 - 5" identifier = (binary_expression "uVar4 - 5" identifier - number_literal)) ;) (if_statement "if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" if (parenthesized_expression "((char)puVar16[2] == '\0')" ( (binary_expression "(char)puVar16[2] == '\0'" (cast_expression "(char)puVar16[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar16[2]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = puVar16 + 3;" (assignment_expression "puVar11 = puVar16 + 3" identifier = (binary_expression "puVar16 + 3" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar4 - 6;" (assignment_expression "uVar19 = uVar4 - 6" identifier = (binary_expression "uVar4 - 6" identifier - number_literal)) ;) (if_statement "if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }" if (parenthesized_expression "(*(char *)((int)puVar16 + 5) == '\0')" ( (binary_expression "*(char *)((int)puVar16 + 5) == '\0'" (pointer_expression "*(char *)((int)puVar16 + 5)" * (cast_expression "(char *)((int)puVar16 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 5)" ( (binary_expression "(int)puVar16 + 5" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }" { (if_statement "if (uVar19 < 0x10) break;" if (parenthesized_expression "(uVar19 < 0x10)" ( (binary_expression "uVar19 < 0x10" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" if (parenthesized_expression "(puVar16[3] == 0x4949)" ( (binary_expression "puVar16[3] == 0x4949" (subscript_expression "puVar16[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }" { (if_statement "if (puVar16[4] != 0x2a) break;" if (parenthesized_expression "(puVar16[4] != 0x2a)" ( (binary_expression "puVar16[4] != 0x2a" (subscript_expression "puVar16[4]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = *(uint *)(puVar16 + 5);" (assignment_expression "uVar12 = *(uint *)(puVar16 + 5)" identifier = (pointer_expression "*(uint *)(puVar16 + 5)" * (cast_expression "(uint *)(puVar16 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 5)" ( (binary_expression "puVar16 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_114c = 1;" (assignment_expression "local_114c = 1" identifier = number_literal) ;) }) (else_clause "else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" else (compound_statement "{\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" { (if_statement "if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;" if (parenthesized_expression "((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00))" ( (binary_expression "(puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)" (parenthesized_expression "(puVar16[3] != 0x4d4d)" ( (binary_expression "puVar16[3] != 0x4d4d" (subscript_expression "puVar16[3]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(puVar16[4] != 0x2a00)" ( (binary_expression "puVar16[4] != 0x2a00" (subscript_expression "puVar16[4]" identifier [ number_literal ]) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = *(uint *)(puVar16 + 5);" (assignment_expression "uVar12 = *(uint *)(puVar16 + 5)" identifier = (pointer_expression "*(uint *)(puVar16 + 5)" * (cast_expression "(uint *)(puVar16 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 5)" ( (binary_expression "puVar16 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_114c = 2;" (assignment_expression "local_114c = 2" identifier = number_literal) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) }))) (if_statement "if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }" if (parenthesized_expression "((-1 < (int)uVar12) && (uVar12 < uVar19))" ( (binary_expression "(-1 < (int)uVar12) && (uVar12 < uVar19)" (parenthesized_expression "(-1 < (int)uVar12)" ( (binary_expression "-1 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar12 < uVar19)" ( (binary_expression "uVar12 < uVar19" identifier < identifier) ))) )) (compound_statement "{\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }" { (expression_statement "local_1110 = (ushort *)(uVar12 + (int)puVar11);" (assignment_expression "local_1110 = (ushort *)(uVar12 + (int)puVar11)" identifier = (cast_expression "(ushort *)(uVar12 + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar12 + (int)puVar11)" ( (binary_expression "uVar12 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar13 = NewSplayTree(0,0,0,local_1110);" (assignment_expression "uVar13 = NewSplayTree(0,0,0,local_1110)" identifier = (call_expression "NewSplayTree(0,0,0,local_1110)" identifier (argument_list "(0,0,0,local_1110)" ( number_literal , number_literal , number_literal , identifier )))) ;) (expression_statement "local_1134 = 0;" (assignment_expression "local_1134 = 0" identifier = number_literal) ;) (expression_statement "local_112c = 0;" (assignment_expression "local_112c = 0" identifier = number_literal) ;) (expression_statement "local_1150 = 0;" (assignment_expression "local_1150 = 0" identifier = number_literal) ;) (expression_statement "local_1104 = 0;" (assignment_expression "local_1104 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00124153;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) }) (else_clause "else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" else (compound_statement "{\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" { (expression_statement "puVar11 = (ushort *)((int)puVar16 + 5);" (assignment_expression "puVar11 = (ushort *)((int)puVar16 + 5)" identifier = (cast_expression "(ushort *)((int)puVar16 + 5)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 5)" ( (binary_expression "(int)puVar16 + 5" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) }) (else_clause "else {\n                  puVar11 = puVar16 + 2;\n                }" else (compound_statement "{\n                  puVar11 = puVar16 + 2;\n                }" { (expression_statement "puVar11 = puVar16 + 2;" (assignment_expression "puVar11 = puVar16 + 2" identifier = (binary_expression "puVar16 + 2" identifier + number_literal)) ;) }))) }) (else_clause "else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" else (compound_statement "{\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" { (expression_statement "puVar11 = (ushort *)((int)puVar16 + 3);" (assignment_expression "puVar11 = (ushort *)((int)puVar16 + 3)" identifier = (cast_expression "(ushort *)((int)puVar16 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 3)" ( (binary_expression "(int)puVar16 + 3" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) }) (else_clause "else {\n              puVar11 = puVar16 + 1;\n            }" else (compound_statement "{\n              puVar11 = puVar16 + 1;\n            }" { (expression_statement "puVar11 = puVar16 + 1;" (assignment_expression "puVar11 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) ;) })) }))) })) })) (labeled_statement "LAB_00123f58:\n  local_1104 = 0;" statement_identifier : (expression_statement "local_1104 = 0;" (assignment_expression "local_1104 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_1104;\n  }" { (return_statement "return local_1104;" return identifier ;) }))) (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" statement_identifier : (if_statement "if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" if (parenthesized_expression "((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2))))" ( (binary_expression "(puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))" (parenthesized_expression "(puVar11 <= local_1110)" ( (binary_expression "puVar11 <= local_1110" identifier <= identifier) )) && (parenthesized_expression "(local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))" ( (binary_expression "local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2))" identifier <= (cast_expression "(ushort *)((int)puVar16 + (uVar4 - 2))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + (uVar4 - 2))" ( (binary_expression "(int)puVar16 + (uVar4 - 2)" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 - 2)" ( (binary_expression "uVar4 - 2" identifier - number_literal) ))) )))) ))) )) (compound_statement "{\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" { (expression_statement "uVar6 = *local_1110;" (assignment_expression "uVar6 = *local_1110" identifier = (pointer_expression "*local_1110" * identifier)) ;) (if_statement "if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }" if (parenthesized_expression "(local_114c != 1)" ( (binary_expression "local_114c != 1" identifier != number_literal) )) (compound_statement "{\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }" { (expression_statement "uVar6 = uVar6 << 8 | uVar6 >> 8;" (assignment_expression "uVar6 = uVar6 << 8 | uVar6 >> 8" identifier = (binary_expression "uVar6 << 8 | uVar6 >> 8" (binary_expression "uVar6 << 8" identifier << number_literal) | (binary_expression "uVar6 >> 8" identifier >> number_literal))) ;) })) (expression_statement "uVar12 = (uint)uVar6;" (assignment_expression "uVar12 = (uint)uVar6" identifier = (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar7 = local_112c;" (assignment_expression "iVar7 = local_112c" identifier = identifier) ;) (if_statement "if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }" if (parenthesized_expression "(local_1150 < uVar12)" ( (binary_expression "local_1150 < uVar12" identifier < identifier) )) (compound_statement "{\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }" { (expression_statement "puVar22 = local_1110 + local_1150 * 6 + 1;" (assignment_expression "puVar22 = local_1110 + local_1150 * 6 + 1" identifier = (binary_expression "local_1110 + local_1150 * 6 + 1" (binary_expression "local_1110 + local_1150 * 6" identifier + (binary_expression "local_1150 * 6" identifier * number_literal)) + number_literal)) ;) (expression_statement "puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));" (assignment_expression "puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc))" identifier = (cast_expression "(ushort *)((int)puVar16 + (uVar4 - 0xc))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + (uVar4 - 0xc))" ( (binary_expression "(int)puVar16 + (uVar4 - 0xc)" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 - 0xc)" ( (binary_expression "uVar4 - 0xc" identifier - number_literal) ))) )))) ;) (if_statement "if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }" if (parenthesized_expression "(puVar22 <= puVar1)" ( (binary_expression "puVar22 <= puVar1" identifier <= identifier) )) (compound_statement "{\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }" { (expression_statement "iVar10 = local_1150 * 0xc - (int)puVar22;" (assignment_expression "iVar10 = local_1150 * 0xc - (int)puVar22" identifier = (binary_expression "local_1150 * 0xc - (int)puVar22" (binary_expression "local_1150 * 0xc" identifier * number_literal) - (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_1144 = local_1110 + local_1150 * 6 + 7;" (assignment_expression "local_1144 = local_1110 + local_1150 * 6 + 7" identifier = (binary_expression "local_1110 + local_1150 * 6 + 7" (binary_expression "local_1110 + local_1150 * 6" identifier + (binary_expression "local_1150 * 6" identifier * number_literal)) + number_literal)) ;) (do_statement "do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);" do (compound_statement "{\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        }" { (expression_statement "puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);" (assignment_expression "puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22)" identifier = (cast_expression "(ushort *)GetValueFromSplayTree(uVar13,puVar22)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetValueFromSplayTree(uVar13,puVar22)" identifier (argument_list "(uVar13,puVar22)" ( identifier , identifier ))))) ;) (if_statement "if (puVar14 == puVar22) break;" if (parenthesized_expression "(puVar14 == puVar22)" ( (binary_expression "puVar14 == puVar22" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "AddValueToSplayTree(uVar13,puVar22,puVar22);" (call_expression "AddValueToSplayTree(uVar13,puVar22,puVar22)" identifier (argument_list "(uVar13,puVar22,puVar22)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" if (parenthesized_expression "(local_114c == 1)" ( (binary_expression "local_114c == 1" identifier == number_literal) )) (compound_statement "{\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }" { (expression_statement "uVar6 = puVar22[1];" (assignment_expression "uVar6 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *puVar22;" (assignment_expression "uVar5 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (if_statement "if (0xb < (ushort)(uVar6 - 1)) break;" if (parenthesized_expression "(0xb < (ushort)(uVar6 - 1))" ( (binary_expression "0xb < (ushort)(uVar6 - 1)" number_literal < (call_expression "(ushort)(uVar6 - 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);" (assignment_expression "pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2)" identifier = (pointer_expression "*(Elf32_Ehdr **)(puVar22 + 2)" * (cast_expression "(Elf32_Ehdr **)(puVar22 + 2)" ( (type_descriptor "Elf32_Ehdr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 2)" ( (binary_expression "puVar22 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" else (compound_statement "{\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" { (expression_statement "uVar5 = *puVar22 << 8 | *puVar22 >> 8;" (assignment_expression "uVar5 = *puVar22 << 8 | *puVar22 >> 8" identifier = (binary_expression "*puVar22 << 8 | *puVar22 >> 8" (binary_expression "*puVar22 << 8" (pointer_expression "*puVar22" * identifier) << number_literal) | (binary_expression "*puVar22 >> 8" (pointer_expression "*puVar22" * identifier) >> number_literal))) ;) (expression_statement "uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;" (assignment_expression "uVar6 = puVar22[1] << 8 | puVar22[1] >> 8" identifier = (binary_expression "puVar22[1] << 8 | puVar22[1] >> 8" (binary_expression "puVar22[1] << 8" (subscript_expression "puVar22[1]" identifier [ number_literal ]) << number_literal) | (binary_expression "puVar22[1] >> 8" (subscript_expression "puVar22[1]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (0xb < (ushort)(uVar6 - 1)) break;" if (parenthesized_expression "(0xb < (ushort)(uVar6 - 1))" ( (binary_expression "0xb < (ushort)(uVar6 - 1)" number_literal < (call_expression "(ushort)(uVar6 - 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "uVar17 = *(uint *)(puVar22 + 2);" (assignment_expression "uVar17 = *(uint *)(puVar22 + 2)" identifier = (pointer_expression "*(uint *)(puVar22 + 2)" * (cast_expression "(uint *)(puVar22 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 2)" ( (binary_expression "puVar22 + 2" identifier + number_literal) ))))) ;) (expression_statement "pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);" (assignment_expression "pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" identifier = (cast_expression "(Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" ( (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal)) )))) ;) }))) (expression_statement "local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);" (assignment_expression "local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134)" identifier = (cast_expression "(Elf32_Ehdr *)(uVar5 + local_1134)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + local_1134)" ( (binary_expression "uVar5 + local_1134" identifier + identifier) )))) ;) (if_statement "if ((int)pEVar23 < 0) break;" if (parenthesized_expression "((int)pEVar23 < 0)" ( (binary_expression "(int)pEVar23 < 0" (cast_expression "(int)pEVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;" (assignment_expression "uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23" identifier = (binary_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23" (pointer_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" * (cast_expression "(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002c0c20 + (uint)uVar6 * 4)" ( (binary_expression "&DAT_002c0c20 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c0c20" & identifier) + (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) * (cast_expression "(int)pEVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar17 < (int)pEVar23) break;" if (parenthesized_expression "((int)uVar17 < (int)pEVar23)" ( (binary_expression "(int)uVar17 < (int)pEVar23" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pEVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" if (parenthesized_expression "((int)uVar17 < 5)" ( (binary_expression "(int)uVar17 < 5" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }" { (expression_statement "local_1140 = puVar22 + 4;" (assignment_expression "local_1140 = puVar22 + 4" identifier = (binary_expression "puVar22 + 4" identifier + number_literal)) ;) (labeled_statement "LAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" statement_identifier : (if_statement "if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" if (parenthesized_expression "((local_1158 != 0) || (local_1160 == local_1148))" ( (binary_expression "(local_1158 != 0) || (local_1160 == local_1148)" (parenthesized_expression "(local_1158 != 0)" ( (binary_expression "local_1158 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_1160 == local_1148)" ( (binary_expression "local_1160 == local_1148" identifier == identifier) ))) )) (compound_statement "{\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" { (if_statement "if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;" if (parenthesized_expression "((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140))" ( (binary_expression "(local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)" (parenthesized_expression "(local_1140 < puVar11)" ( (binary_expression "local_1140 < puVar11" identifier < identifier) )) || (parenthesized_expression "((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)" ( (binary_expression "(ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140" (cast_expression "(ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11)" ( (binary_expression "(uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11" (parenthesized_expression "(uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4))" ( (binary_expression "uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" identifier - (pointer_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" * (cast_expression "(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002c0c20 + (uint)uVar6 * 4)" ( (binary_expression "&DAT_002c0c20 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c0c20" & identifier) + (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) )) + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "local_1020 = 0;" (assignment_expression "local_1020 = 0" identifier = number_literal) ;) (if_statement "if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }" if (parenthesized_expression "(uVar6 < 0xd)" ( (binary_expression "uVar6 < 0xd" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }" { (expression_statement "uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();" (assignment_expression "uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ()" identifier = (call_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ()" (parenthesized_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))" ( (pointer_expression "*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" * (cast_expression "(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" ( (binary_expression "(int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" (cast_expression "(int)&__DT_PLTGOT" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__DT_PLTGOT" & identifier)) + (pointer_expression "*(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" * (cast_expression "(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002c05b8 + (uint)uVar6 * 4)" ( (binary_expression "&DAT_002c05b8 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c05b8" & identifier) + (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar13;" return identifier ;) })) (expression_statement "puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);" (assignment_expression "puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11)" identifier = (cast_expression "(ushort *)((uVar19 - uVar17) + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar19 - uVar17) + (int)puVar11)" ( (binary_expression "(uVar19 - uVar17) + (int)puVar11" (parenthesized_expression "(uVar19 - uVar17)" ( (binary_expression "uVar19 - uVar17" identifier - identifier) )) + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }" if (parenthesized_expression "(local_1140 <= puVar14)" ( (binary_expression "local_1140 <= puVar14" identifier <= identifier) )) (compound_statement "{\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }" { (expression_statement "iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);" (assignment_expression "iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14)" identifier = (call_expression "AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14)" identifier (argument_list "(uVar17 + 1,1,puVar14,puVar14)" ( (binary_expression "uVar17 + 1" identifier + number_literal) , number_literal , identifier , identifier )))) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (if_statement "if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }" { (for_statement "for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }" for ( ; (binary_expression "iVar20 < (int)uVar17" identifier < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ) (compound_statement "{\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }" { (expression_statement "*(undefined1 *)(iVar15 + iVar20) = 0x2e;" (assignment_expression "*(undefined1 *)(iVar15 + iVar20) = 0x2e" (pointer_expression "*(undefined1 *)(iVar15 + iVar20)" * (cast_expression "(undefined1 *)(iVar15 + iVar20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar20)" ( (binary_expression "iVar15 + iVar20" identifier + identifier) )))) = number_literal) ;) (expression_statement "bVar2 = *(byte *)((int)local_1140 + iVar20);" (assignment_expression "bVar2 = *(byte *)((int)local_1140 + iVar20)" identifier = (pointer_expression "*(byte *)((int)local_1140 + iVar20)" * (cast_expression "(byte *)((int)local_1140 + iVar20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_1140 + iVar20)" ( (binary_expression "(int)local_1140 + iVar20" (cast_expression "(int)local_1140" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "pEVar23 = (Elf32_Ehdr *)*ppuVar8;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)*ppuVar8" identifier = (cast_expression "(Elf32_Ehdr *)*ppuVar8" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppuVar8" * identifier))) ;) (if_statement "if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }" if (parenthesized_expression "(((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       )" ( (binary_expression "((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)" (parenthesized_expression "((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0)" ( (binary_expression "(pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0" (parenthesized_expression "(pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U)" ( (binary_expression "pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U" (subscript_expression "pEVar23->e_ident_magic_str[(uint)bVar2 * 2]" (field_expression "pEVar23->e_ident_magic_str" identifier -> field_identifier) [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) != number_literal) )) || (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }" { (expression_statement "*(byte *)(iVar15 + iVar20) = bVar2;" (assignment_expression "*(byte *)(iVar15 + iVar20) = bVar2" (pointer_expression "*(byte *)(iVar15 + iVar20)" * (cast_expression "(byte *)(iVar15 + iVar20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar20)" ( (binary_expression "iVar15 + iVar20" identifier + identifier) )))) = identifier) ;) })) })) (expression_statement "*(undefined1 *)(iVar15 + uVar17) = 0;" (assignment_expression "*(undefined1 *)(iVar15 + uVar17) = 0" (pointer_expression "*(undefined1 *)(iVar15 + uVar17)" * (cast_expression "(undefined1 *)(iVar15 + uVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar17)" ( (binary_expression "iVar15 + uVar17" identifier + identifier) )))) = number_literal) ;) (expression_statement "local_10e4 = AcquireString(param_2);" (assignment_expression "local_10e4 = AcquireString(param_2)" identifier = (call_expression "AcquireString(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" if (parenthesized_expression "(local_1158 == 1)" ( (binary_expression "local_1158 == 1" identifier == number_literal) )) (compound_statement "{\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }" { (if_statement "if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" if (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x1)" ( (binary_expression "local_1148 == (Elf32_Ehdr *)0x1" identifier == (cast_expression "(Elf32_Ehdr *)0x1" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;" statement_identifier : (expression_statement "pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;" (assignment_expression "pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28" identifier = (binary_expression ""exif:InteroperabilityIndex" + iVar20 * 0x28" (string_literal ""exif:InteroperabilityIndex"" " string_content ") + (binary_expression "iVar20 * 0x28" identifier * number_literal))) ;)) }) (else_clause "else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" else (compound_statement "{\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "pEVar23 = (Elf32_Ehdr *)0x2;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)0x2" identifier = (cast_expression "(Elf32_Ehdr *)0x2" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar21 = &DAT_002c0cb0;" (assignment_expression "puVar21 = &DAT_002c0cb0" identifier = (pointer_expression "&DAT_002c0cb0" & identifier)) ;) (while_statement "while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }" while (parenthesized_expression "(iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0)" ( (comma_expression "iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) , (binary_expression "pEVar23 != (Elf32_Ehdr *)0x0" identifier != (cast_expression "(Elf32_Ehdr *)0x0" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }" { (if_statement "if (pEVar23 == local_1148) goto LAB_00124bb8;" if (parenthesized_expression "(pEVar23 == local_1148)" ( (binary_expression "pEVar23 == local_1148" identifier == identifier) )) (goto_statement "goto LAB_00124bb8;" goto statement_identifier ;)) (expression_statement "pEVar23 = (Elf32_Ehdr *)*puVar21;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)*puVar21" identifier = (cast_expression "(Elf32_Ehdr *)*puVar21" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar21" * identifier))) ;) (expression_statement "puVar21 = puVar21 + 10;" (assignment_expression "puVar21 = puVar21 + 10" identifier = (binary_expression "puVar21 + 10" identifier + number_literal)) ;) })) (expression_statement "pcVar18 = "unknown";" (assignment_expression "pcVar18 = "unknown"" identifier = (string_literal ""unknown"" " string_content ")) ;) }))) (expression_statement "FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);" (call_expression "FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18)" identifier (argument_list "(local_10e4,0x1000,&DAT_002b6e4e,pcVar18)" ( identifier , number_literal , (pointer_expression "&DAT_002b6e4e" & identifier) , identifier ))) ;) (expression_statement "pEVar23 = local_1148;" (assignment_expression "pEVar23 = local_1148" identifier = identifier) ;) (labeled_statement "LAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" statement_identifier : (if_statement "if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" if (parenthesized_expression "(local_112c == 2)" ( (binary_expression "local_112c == 2" identifier == number_literal) )) (compound_statement "{\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" { (expression_statement "SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);" (call_expression "SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23)" identifier (argument_list "(&local_10e4,"exif:","exif:thumbnail:",pEVar23)" ( (pointer_expression "&local_10e4" & identifier) , (string_literal ""exif:"" " string_content ") , (string_literal ""exif:thumbnail:"" " string_content ") , identifier ))) ;) }))) }) (else_clause "else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" else (compound_statement "{\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" { (if_statement "if (local_1158 != 2) goto LAB_00124b46;" if (parenthesized_expression "(local_1158 != 2)" ( (binary_expression "local_1158 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00124b46;" goto statement_identifier ;)) (if_statement "if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" if (parenthesized_expression "(local_1148 < &Elf32_Ehdr_00010000)" ( (binary_expression "local_1148 < &Elf32_Ehdr_00010000" identifier < (pointer_expression "&Elf32_Ehdr_00010000" & identifier)) )) (compound_statement "{\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }" { (expression_statement "pcVar18 = "#%04lx";" (assignment_expression "pcVar18 = "#%04lx"" identifier = (string_literal ""#%04lx"" " string_content ")) ;) (expression_statement "pEVar23 = local_1148;" (assignment_expression "pEVar23 = local_1148" identifier = identifier) ;) }) (else_clause "else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" else (if_statement "if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" if (parenthesized_expression "((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148)" ( (binary_expression "(Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148" (cast_expression "(Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__DT_REL[0x26c].r_offset + 3)" ( (binary_expression "(int)&__DT_REL[0x26c].r_offset + 3" (cast_expression "(int)&__DT_REL[0x26c].r_offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__DT_REL[0x26c].r_offset" & (field_expression "__DT_REL[0x26c].r_offset" (subscript_expression "__DT_REL[0x26c]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))) < identifier) )) (compound_statement "{\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }" { (expression_statement "pcVar18 = "unknown";" (assignment_expression "pcVar18 = "unknown"" identifier = (string_literal ""unknown"" " string_content ")) ;) (expression_statement "pEVar23 = extraout_ECX;" (assignment_expression "pEVar23 = extraout_ECX" identifier = identifier) ;) }) (else_clause "else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" else (compound_statement "{\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" { (expression_statement "pcVar18 = "@%04lx";" (assignment_expression "pcVar18 = "@%04lx"" identifier = (string_literal ""@%04lx"" " string_content ")) ;) (expression_statement "pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);" (assignment_expression "pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff)" identifier = (cast_expression "(Elf32_Ehdr *)((uint)local_1148 & 0xffff)" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_1148 & 0xffff)" ( (binary_expression "(uint)local_1148 & 0xffff" (cast_expression "(uint)local_1148" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) }))))) (expression_statement "FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);" (call_expression "FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23)" identifier (argument_list "(local_10e4,0x1000,pcVar18,pEVar23)" ( identifier , number_literal , identifier , identifier ))) ;) }))) (if_statement "if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }" if (parenthesized_expression "((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0))" ( (binary_expression "(*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)" (parenthesized_expression "(*(int *)(param_1 + 0x310) == 0)" ( (binary_expression "*(int *)(param_1 + 0x310) == 0" (pointer_expression "*(int *)(param_1 + 0x310)" * (cast_expression "(int *)(param_1 + 0x310)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x310)" ( (binary_expression "param_1 + 0x310" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)" ( (comma_expression "iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0" (assignment_expression "iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4)" identifier = (call_expression "GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4)" identifier (argument_list "(*(int *)(param_1 + 0x310),local_10e4)" ( (pointer_expression "*(int *)(param_1 + 0x310)" * (cast_expression "(int *)(param_1 + 0x310)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x310)" ( (binary_expression "param_1 + 0x310" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar20 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }" { (expression_statement "SetImageProperty(param_1,local_10e4,iVar15,param_3);" (call_expression "SetImageProperty(param_1,local_10e4,iVar15,param_3)" identifier (argument_list "(param_1,local_10e4,iVar15,param_3)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "DestroyString(iVar15);" (call_expression "DestroyString(iVar15)" identifier (argument_list "(iVar15)" ( identifier ))) ;) (expression_statement "DestroyString(local_10e4);" (call_expression "DestroyString(local_10e4)" identifier (argument_list "(local_10e4)" ( identifier ))) ;) (expression_statement "local_1104 = 1;" (assignment_expression "local_1104 = 1" identifier = number_literal) ;) })) })) }))) (if_statement "if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }" if (parenthesized_expression "(((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825))" ( (binary_expression "((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)" (parenthesized_expression "((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005))" ( (binary_expression "(local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)" (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x8769)" ( (binary_expression "local_1148 == (Elf32_Ehdr *)0x8769" identifier == (cast_expression "(Elf32_Ehdr *)0x8769" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0xa005)" ( (binary_expression "local_1148 == (Elf32_Ehdr *)0xa005" identifier == (cast_expression "(Elf32_Ehdr *)0xa005" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x8825)" ( (binary_expression "local_1148 == (Elf32_Ehdr *)0x8825" identifier == (cast_expression "(Elf32_Ehdr *)0x8825" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }" { (expression_statement "uVar17 = FUN_00121780();" (assignment_expression "uVar17 = FUN_00121780()" identifier = (call_expression "FUN_00121780()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }" if (parenthesized_expression "(uVar17 < uVar19)" ( (binary_expression "uVar17 < uVar19" identifier < identifier) )) (compound_statement "{\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }" { (if_statement "if (0xd < local_112c) goto LAB_00124aba;" if (parenthesized_expression "(0xd < local_112c)" ( (binary_expression "0xd < local_112c" number_literal < identifier) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) (expression_statement "uVar24 = 0x10000;" (assignment_expression "uVar24 = 0x10000" identifier = number_literal) ;) (if_statement "if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }" if (parenthesized_expression "(local_1148 != (Elf32_Ehdr *)0x8825)" ( (binary_expression "local_1148 != (Elf32_Ehdr *)0x8825" identifier != (cast_expression "(Elf32_Ehdr *)0x8825" ( (type_descriptor "Elf32_Ehdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  uVar24 = 0;\n                }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) })) (expression_statement "iVar7 = local_112c + 1;" (assignment_expression "iVar7 = local_112c + 1" identifier = (binary_expression "local_112c + 1" identifier + number_literal)) ;) (expression_statement "local_10e0[local_112c * 3] = (uint)local_1110;" (assignment_expression "local_10e0[local_112c * 3] = (uint)local_1110" (subscript_expression "local_10e0[local_112c * 3]" identifier [ (binary_expression "local_112c * 3" identifier * number_literal) ]) = (cast_expression "(uint)local_1110" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_10e0[local_112c * 3 + 1] = local_1150 + 1;" (assignment_expression "local_10e0[local_112c * 3 + 1] = local_1150 + 1" (subscript_expression "local_10e0[local_112c * 3 + 1]" identifier [ (binary_expression "local_112c * 3 + 1" (binary_expression "local_112c * 3" identifier * number_literal) + number_literal) ]) = (binary_expression "local_1150 + 1" identifier + number_literal)) ;) (expression_statement "local_10e0[local_112c * 3 + 2] = local_1134;" (assignment_expression "local_10e0[local_112c * 3 + 2] = local_1134" (subscript_expression "local_10e0[local_112c * 3 + 2]" identifier [ (binary_expression "local_112c * 3 + 2" (binary_expression "local_112c * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "pcVar18 = (char *)((int)puVar11 + uVar17);" (assignment_expression "pcVar18 = (char *)((int)puVar11 + uVar17)" identifier = (cast_expression "(char *)((int)puVar11 + uVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + uVar17)" ( (binary_expression "(int)puVar11 + uVar17" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (goto_statement "goto LAB_00124c76;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) }) (else_clause "else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" else (compound_statement "{\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" { (expression_statement "uVar24 = *(uint *)(puVar22 + 4);" (assignment_expression "uVar24 = *(uint *)(puVar22 + 4)" identifier = (pointer_expression "*(uint *)(puVar22 + 4)" * (cast_expression "(uint *)(puVar22 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 4)" ( (binary_expression "puVar22 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;" (assignment_expression "uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18" identifier = (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18" (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8" (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8" (binary_expression "uVar24 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar24 & 0xff0000) >> 8" (parenthesized_expression "(uVar24 & 0xff0000)" ( (binary_expression "uVar24 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar24 & 0xff00) << 8" (parenthesized_expression "(uVar24 & 0xff00)" ( (binary_expression "uVar24 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar24 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }" if (parenthesized_expression "(local_114c == 1)" ( (binary_expression "local_114c == 1" identifier == number_literal) )) (compound_statement "{\n              uVar24 = *(uint *)(puVar22 + 4);\n            }" { (expression_statement "uVar24 = *(uint *)(puVar22 + 4);" (assignment_expression "uVar24 = *(uint *)(puVar22 + 4)" identifier = (pointer_expression "*(uint *)(puVar22 + 4)" * (cast_expression "(uint *)(puVar22 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 4)" ( (binary_expression "puVar22 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }" if (parenthesized_expression "((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24)))" ( (binary_expression "(((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))" (parenthesized_expression "(((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19))" ( (binary_expression "((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)" (parenthesized_expression "((-1 < (int)uVar24) && (uVar24 < uVar19))" ( (binary_expression "(-1 < (int)uVar24) && (uVar24 < uVar19)" (parenthesized_expression "(-1 < (int)uVar24)" ( (binary_expression "-1 < (int)uVar24" number_literal < (cast_expression "(int)uVar24" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar24 < uVar19)" ( (binary_expression "uVar24 < uVar19" identifier < identifier) ))) )) && (parenthesized_expression "(uVar17 + uVar24 <= uVar19)" ( (binary_expression "uVar17 + uVar24 <= uVar19" (binary_expression "uVar17 + uVar24" identifier + identifier) <= identifier) ))) )) && (parenthesized_expression "(!CARRY4(uVar17,uVar24))" ( (unary_expression "!CARRY4(uVar17,uVar24)" ! (call_expression "CARRY4(uVar17,uVar24)" identifier (argument_list "(uVar17,uVar24)" ( identifier , identifier )))) ))) )) (compound_statement "{\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }" { (expression_statement "local_1140 = (ushort *)(uVar24 + (int)puVar11);" (assignment_expression "local_1140 = (ushort *)(uVar24 + (int)puVar11)" identifier = (cast_expression "(ushort *)(uVar24 + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar24 + (int)puVar11)" ( (binary_expression "uVar24 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (goto_statement "goto LAB_001241d4;" goto statement_identifier ;) })) }))) (expression_statement "local_1150 = local_1150 + 1;" (assignment_expression "local_1150 = local_1150 + 1" identifier = (binary_expression "local_1150 + 1" identifier + number_literal)) ;) (if_statement "if (uVar12 == local_1150) break;" if (parenthesized_expression "(uVar12 == local_1150)" ( (binary_expression "uVar12 == local_1150" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));" (assignment_expression "puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" identifier = (cast_expression "(ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" ( (binary_expression "(int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe)" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)((int)local_1110 + iVar10 + 0xe)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)local_1110 + iVar10 + 0xe)" ( (binary_expression "(int)local_1110 + iVar10 + 0xe" (binary_expression "(int)local_1110 + iVar10" (cast_expression "(int)local_1110" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) )))) ;) (expression_statement "bVar25 = local_1144 <= puVar1;" (assignment_expression "bVar25 = local_1144 <= puVar1" identifier = (binary_expression "local_1144 <= puVar1" identifier <= identifier)) ;) (expression_statement "local_1144 = local_1144 + 6;" (assignment_expression "local_1144 = local_1144 + 6" identifier = (binary_expression "local_1144 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar25)" ( identifier )) ;) })) })) (if_statement "if (local_112c != 0) goto LAB_00124aba;" if (parenthesized_expression "(local_112c != 0)" ( (binary_expression "local_112c != 0" identifier != number_literal) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00124b97;" goto statement_identifier ;) (while_statement "while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }" while (parenthesized_expression "(iVar10 = iVar10 + 1, iVar10 < iVar7)" ( (comma_expression "iVar10 = iVar10 + 1, iVar10 < iVar7" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) , (binary_expression "iVar10 < iVar7" identifier < identifier)) )) (compound_statement "{\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }" { (labeled_statement "LAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" statement_identifier : (if_statement "if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" if (parenthesized_expression "((char *)local_10e0[iVar10 * 3] == pcVar18)" ( (binary_expression "(char *)local_10e0[iVar10 * 3] == pcVar18" (cast_expression "(char *)local_10e0[iVar10 * 3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_10e0[iVar10 * 3]" identifier [ (binary_expression "iVar10 * 3" identifier * number_literal) ])) == identifier) )) (compound_statement "{\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" { (expression_statement "pcVar18 = (char *)local_10e0[iVar10 * 3];" (assignment_expression "pcVar18 = (char *)local_10e0[iVar10 * 3]" identifier = (cast_expression "(char *)local_10e0[iVar10 * 3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_10e0[iVar10 * 3]" identifier [ (binary_expression "iVar10 * 3" identifier * number_literal) ]))) ;) (if_statement "if (iVar10 < iVar7) goto LAB_00124aba;" if (parenthesized_expression "(iVar10 < iVar7)" ( (binary_expression "iVar10 < iVar7" identifier < identifier) )) (goto_statement "goto LAB_00124aba;" goto statement_identifier ;)) (break_statement "break;" break ;) }))) })) (expression_statement "local_10e0[iVar7 * 3] = (uint)pcVar18;" (assignment_expression "local_10e0[iVar7 * 3] = (uint)pcVar18" (subscript_expression "local_10e0[iVar7 * 3]" identifier [ (binary_expression "iVar7 * 3" identifier * number_literal) ]) = (cast_expression "(uint)pcVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_10e0[iVar7 * 3 + 2] = uVar24;" (assignment_expression "local_10e0[iVar7 * 3 + 2] = uVar24" (subscript_expression "local_10e0[iVar7 * 3 + 2]" identifier [ (binary_expression "iVar7 * 3 + 2" (binary_expression "iVar7 * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "local_10e0[iVar7 * 3 + 1] = 0;" (assignment_expression "local_10e0[iVar7 * 3 + 1] = 0" (subscript_expression "local_10e0[iVar7 * 3 + 1]" identifier [ (binary_expression "iVar7 * 3 + 1" (binary_expression "iVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "iVar7 = local_112c + 2;" (assignment_expression "iVar7 = local_112c + 2" identifier = (binary_expression "local_112c + 2" identifier + number_literal)) ;) (if_statement "if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }" if (parenthesized_expression "(((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19))))" ( (binary_expression "((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))" (parenthesized_expression "((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0))" ( (binary_expression "(local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)" (parenthesized_expression "(local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19))" ( (binary_expression "local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)" (binary_expression "local_1110 + uVar12 * 6 + 3" (binary_expression "local_1110 + uVar12 * 6" identifier + (binary_expression "uVar12 * 6" identifier * number_literal)) + number_literal) <= (cast_expression "(ushort *)((int)puVar11 + uVar19)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + uVar19)" ( (binary_expression "(int)puVar11 + uVar19" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) )) && (parenthesized_expression "(uVar12 = FUN_00121780(), uVar12 != 0)" ( (comma_expression "uVar12 = FUN_00121780(), uVar12 != 0" (assignment_expression "uVar12 = FUN_00121780()" identifier = (call_expression "FUN_00121780()" identifier (argument_list "()" ( )))) , (binary_expression "uVar12 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((iVar7 < 0xe && (uVar12 < uVar19)))" ( (parenthesized_expression "(iVar7 < 0xe && (uVar12 < uVar19))" ( (binary_expression "iVar7 < 0xe && (uVar12 < uVar19)" (binary_expression "iVar7 < 0xe" identifier < number_literal) && (parenthesized_expression "(uVar12 < uVar19)" ( (binary_expression "uVar12 < uVar19" identifier < identifier) ))) )) ))) )) (compound_statement "{\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }" { (expression_statement "local_10e0[iVar7 * 3 + 1] = 0;" (assignment_expression "local_10e0[iVar7 * 3 + 1] = 0" (subscript_expression "local_10e0[iVar7 * 3 + 1]" identifier [ (binary_expression "iVar7 * 3 + 1" (binary_expression "iVar7 * 3" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);" (assignment_expression "local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11)" (subscript_expression "local_10e0[iVar7 * 3]" identifier [ (binary_expression "iVar7 * 3" identifier * number_literal) ]) = (call_expression "(uint)(uVar12 + (int)puVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 + (int)puVar11)" ( (binary_expression "uVar12 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_10e0[iVar7 * 3 + 2] = uVar24;" (assignment_expression "local_10e0[iVar7 * 3 + 2] = uVar24" (subscript_expression "local_10e0[iVar7 * 3 + 2]" identifier [ (binary_expression "iVar7 * 3 + 2" (binary_expression "iVar7 * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "iVar7 = local_112c + 3;" (assignment_expression "iVar7 = local_112c + 3" identifier = (binary_expression "local_112c + 3" identifier + number_literal)) ;) })) (labeled_statement "LAB_00124aba:\n  local_112c = iVar7;" statement_identifier : (expression_statement "local_112c = iVar7;" (assignment_expression "local_112c = iVar7" identifier = identifier) ;)) (expression_statement "local_112c = local_112c + -1;" (assignment_expression "local_112c = local_112c + -1" identifier = (binary_expression "local_112c + -1" identifier + number_literal)) ;) (expression_statement "local_1110 = (ushort *)local_10e0[local_112c * 3];" (assignment_expression "local_1110 = (ushort *)local_10e0[local_112c * 3]" identifier = (cast_expression "(ushort *)local_10e0[local_112c * 3]" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_10e0[local_112c * 3]" identifier [ (binary_expression "local_112c * 3" identifier * number_literal) ]))) ;) (expression_statement "local_1150 = local_10e0[local_112c * 3 + 1];" (assignment_expression "local_1150 = local_10e0[local_112c * 3 + 1]" identifier = (subscript_expression "local_10e0[local_112c * 3 + 1]" identifier [ (binary_expression "local_112c * 3 + 1" (binary_expression "local_112c * 3" identifier * number_literal) + number_literal) ])) ;) (expression_statement "local_1134 = local_10e0[local_112c * 3 + 2];" (assignment_expression "local_1134 = local_10e0[local_112c * 3 + 2]" identifier = (subscript_expression "local_10e0[local_112c * 3 + 2]" identifier [ (binary_expression "local_112c * 3 + 2" (binary_expression "local_112c * 3" identifier * number_literal) + number_literal) ])) ;) (goto_statement "goto LAB_00124153;" goto statement_identifier ;) (labeled_statement "LAB_00124b97:\n  DestroySplayTree(uVar13);" statement_identifier : (expression_statement "DestroySplayTree(uVar13);" (call_expression "DestroySplayTree(uVar13)" identifier (argument_list "(uVar13)" ( identifier ))) ;)) (goto_statement "goto LAB_00123f5a;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT | (binary_expression IDENT - LIT)) )))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT | (binary_expression IDENT - LIT)) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT | (binary_expression IDENT - LIT)) )))) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - LIT)) , (binary_expression IDENT != (char_literal ' character '))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) }))) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) )))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) << LIT) | (binary_expression (pointer_expression * IDENT) >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) | (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) )) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) < IDENT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (field_expression IDENT -> field_identifier) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ]) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (string_literal " string_content ") + (binary_expression IDENT * LIT))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (string_literal " string_content ") , (string_literal " string_content ") , IDENT ))) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier))) + LIT) ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) }))))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= IDENT) ))) )) && (parenthesized_expression ( (unary_expression ! (call_expression IDENT (argument_list ( IDENT , IDENT )))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT <= IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT < IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression IDENT * LIT) ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) <= (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT < LIT) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined4 __regparm3 FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  char cVar3;\n  uint uVar4;\n  ushort uVar5;\n  ushort uVar6;\n  int iVar7;\n  ushort **ppuVar8;\n  size_t sVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  undefined4 uVar13;\n  ushort *puVar14;\n  int iVar15;\n  ushort *puVar16;\n  uint uVar17;\n  Elf32_Ehdr *extraout_ECX;\n  char *pcVar18;\n  uint uVar19;\n  int iVar20;\n  undefined4 *puVar21;\n  ushort *puVar22;\n  Elf32_Ehdr *pEVar23;\n  uint uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  Elf32_Ehdr *local_1160;\n  int local_1158;\n  uint local_1150;\n  int local_114c;\n  Elf32_Ehdr *local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  uint local_1134;\n  int local_112c;\n  ushort *local_1110;\n  undefined4 local_1104;\n  undefined4 local_10e4;\n  uint local_10e0 [48];\n  undefined1 local_1020;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x123e2d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar7 = GetImageProfile(param_1,&DAT_002c0184);\n  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = 0;\nLAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    \n  FUN_0029eab0();\nLAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }\n  local_10e0[iVar7 * 3] = (uint)pcVar18;\n  local_10e0[iVar7 * 3 + 2] = uVar24;\n  local_10e0[iVar7 * 3 + 1] = 0;\n  iVar7 = local_112c + 2;\n  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar7;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)local_10e0[local_112c * 3];\n  local_1150 = local_10e0[local_112c * 3 + 1];\n  local_1134 = local_10e0[local_112c * 3 + 2];\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(uVar13);\n  goto LAB_00123f5a;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00123e20(int param_1,byte *param_2,undefined4 param_3)" (identifier "FUN_00123e20") (parameter_list "(int param_1,byte *param_2,undefined4 param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  ushort *puVar1;\n  byte bVar2;\n  char cVar3;\n  uint uVar4;\n  ushort uVar5;\n  ushort uVar6;\n  int iVar7;\n  ushort **ppuVar8;\n  size_t sVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  undefined4 uVar13;\n  ushort *puVar14;\n  int iVar15;\n  ushort *puVar16;\n  uint uVar17;\n  Elf32_Ehdr *extraout_ECX;\n  char *pcVar18;\n  uint uVar19;\n  int iVar20;\n  undefined4 *puVar21;\n  ushort *puVar22;\n  Elf32_Ehdr *pEVar23;\n  uint uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  Elf32_Ehdr *local_1160;\n  int local_1158;\n  uint local_1150;\n  int local_114c;\n  Elf32_Ehdr *local_1148;\n  ushort *local_1144;\n  ushort *local_1140;\n  uint local_1134;\n  int local_112c;\n  ushort *local_1110;\n  undefined4 local_1104;\n  undefined4 local_10e4;\n  uint local_10e0 [48];\n  undefined1 local_1020;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x123e2d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar7 = GetImageProfile(param_1,&DAT_002c0184);\n  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }\nLAB_00123f58:\n  local_1104 = 0;\nLAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }\n                    \n  FUN_0029eab0();\nLAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }\n  goto LAB_00124b97;\n  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }\n  local_10e0[iVar7 * 3] = (uint)pcVar18;\n  local_10e0[iVar7 * 3 + 2] = uVar24;\n  local_10e0[iVar7 * 3 + 1] = 0;\n  iVar7 = local_112c + 2;\n  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }\nLAB_00124aba:\n  local_112c = iVar7;\n  local_112c = local_112c + -1;\n  local_1110 = (ushort *)local_10e0[local_112c * 3];\n  local_1150 = local_10e0[local_112c * 3 + 1];\n  local_1134 = local_10e0[local_112c * 3 + 2];\n  goto LAB_00124153;\nLAB_00124b97:\n  DestroySplayTree(uVar13);\n  goto LAB_00123f5a;\n}" ({ "{") (declaration "ushort *puVar1;" (type_identifier "ushort") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "ushort uVar5;" (type_identifier "ushort") (identifier "uVar5") (; ";")) (declaration "ushort uVar6;" (type_identifier "ushort") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "ushort **ppuVar8;" (type_identifier "ushort") (pointer_declarator "**ppuVar8" (* "*") (pointer_declarator "*ppuVar8" (* "*") (identifier "ppuVar8"))) (; ";")) (declaration "size_t sVar9;" (primitive_type "size_t") (identifier "sVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "ushort *puVar11;" (type_identifier "ushort") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "undefined4 uVar13;" (type_identifier "undefined4") (identifier "uVar13") (; ";")) (declaration "ushort *puVar14;" (type_identifier "ushort") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "ushort *puVar16;" (type_identifier "ushort") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "Elf32_Ehdr *extraout_ECX;" (type_identifier "Elf32_Ehdr") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "char *pcVar18;" (primitive_type "char") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "undefined4 *puVar21;" (type_identifier "undefined4") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "ushort *puVar22;" (type_identifier "ushort") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "Elf32_Ehdr *pEVar23;" (type_identifier "Elf32_Ehdr") (pointer_declarator "*pEVar23" (* "*") (identifier "pEVar23")) (; ";")) (declaration "uint uVar24;" (type_identifier "uint") (identifier "uVar24") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar25;" (primitive_type "bool") (identifier "bVar25") (; ";")) (declaration "Elf32_Ehdr *local_1160;" (type_identifier "Elf32_Ehdr") (pointer_declarator "*local_1160" (* "*") (identifier "local_1160")) (; ";")) (declaration "int local_1158;" (primitive_type "int") (identifier "local_1158") (; ";")) (declaration "uint local_1150;" (type_identifier "uint") (identifier "local_1150") (; ";")) (declaration "int local_114c;" (primitive_type "int") (identifier "local_114c") (; ";")) (declaration "Elf32_Ehdr *local_1148;" (type_identifier "Elf32_Ehdr") (pointer_declarator "*local_1148" (* "*") (identifier "local_1148")) (; ";")) (declaration "ushort *local_1144;" (type_identifier "ushort") (pointer_declarator "*local_1144" (* "*") (identifier "local_1144")) (; ";")) (declaration "ushort *local_1140;" (type_identifier "ushort") (pointer_declarator "*local_1140" (* "*") (identifier "local_1140")) (; ";")) (declaration "uint local_1134;" (type_identifier "uint") (identifier "local_1134") (; ";")) (declaration "int local_112c;" (primitive_type "int") (identifier "local_112c") (; ";")) (declaration "ushort *local_1110;" (type_identifier "ushort") (pointer_declarator "*local_1110" (* "*") (identifier "local_1110")) (; ";")) (declaration "undefined4 local_1104;" (type_identifier "undefined4") (identifier "local_1104") (; ";")) (declaration "undefined4 local_10e4;" (type_identifier "undefined4") (identifier "local_10e4") (; ";")) (declaration "uint local_10e0 [48];" (type_identifier "uint") (array_declarator "local_10e0 [48]" (identifier "local_10e0") ([ "[") (number_literal "48") (] "]")) (; ";")) (declaration "undefined1 local_1020;" (type_identifier "undefined1") (identifier "local_1020") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x123e2d;" (assignment_expression "uStack_14 = 0x123e2d" (identifier "uStack_14") (= "=") (number_literal "0x123e2d")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar7 = GetImageProfile(param_1,&DAT_002c0184);" (assignment_expression "iVar7 = GetImageProfile(param_1,&DAT_002c0184)" (identifier "iVar7") (= "=") (call_expression "GetImageProfile(param_1,&DAT_002c0184)" (identifier "GetImageProfile") (argument_list "(param_1,&DAT_002c0184)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_002c0184" (& "&") (identifier "DAT_002c0184")) () ")")))) (; ";")) (if_statement "if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0))" (( "(") (binary_expression "((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)" (parenthesized_expression "((iVar7 != 0) && (param_2 != (byte *)0x0))" (( "(") (binary_expression "(iVar7 != 0) && (param_2 != (byte *)0x0)" (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_2 != (byte *)0x0)" (( "(") (binary_expression "param_2 != (byte *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar2 = *param_2, bVar2 != 0)" (( "(") (comma_expression "bVar2 = *param_2, bVar2 != 0" (assignment_expression "bVar2 = *param_2" (identifier "bVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (binary_expression "bVar2 != 0" (identifier "bVar2") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    ppuVar8 = __ctype_b_loc();\n    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }\n    sVar9 = strlen((char *)param_2);\n    if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" (identifier "ppuVar8") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (while_statement "while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }" (while "while") (parenthesized_expression "((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20)" (( "(") (binary_expression "*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)*ppuVar8 + (uint)bVar2 * 2 + 1)" (( "(") (binary_expression "(int)*ppuVar8 + (uint)bVar2 * 2 + 1" (binary_expression "(int)*ppuVar8 + (uint)bVar2 * 2" (cast_expression "(int)*ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*ppuVar8" (* "*") (identifier "ppuVar8"))) (+ "+") (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      param_2 = param_2 + 1;\n      bVar2 = *param_2;\n    }" ({ "{") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = *param_2;" (assignment_expression "bVar2 = *param_2" (identifier "bVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}"))) (expression_statement "sVar9 = strlen((char *)param_2);" (assignment_expression "sVar9 = strlen((char *)param_2)" (identifier "sVar9") (= "=") (call_expression "strlen((char *)param_2)" (identifier "strlen") (argument_list "((char *)param_2)" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) () ")")))) (; ";")) (if_statement "if (5 < sVar9) {\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(5 < sVar9)" (( "(") (binary_expression "5 < sVar9" (number_literal "5") (< "<") (identifier "sVar9")) () ")")) (compound_statement "{\n      bVar2 = param_2[5];\n      if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }\n    }" ({ "{") (expression_statement "bVar2 = param_2[5];" (assignment_expression "bVar2 = param_2[5]" (identifier "bVar2") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (bVar2 == 0x23) {\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }\n      else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" (if "if") (parenthesized_expression "(bVar2 == 0x23)" (( "(") (binary_expression "bVar2 == 0x23" (identifier "bVar2") (== "==") (number_literal "0x23")) () ")")) (compound_statement "{\nLAB_00123edc:\n        param_2 = param_2 + 6;\n        sVar9 = strlen((char *)param_2);\n        if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }\n      }" ({ "{") (labeled_statement "LAB_00123edc:\n        param_2 = param_2 + 6;" (statement_identifier "LAB_00123edc") (: ":") (expression_statement "param_2 = param_2 + 6;" (assignment_expression "param_2 = param_2 + 6" (identifier "param_2") (= "=") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6"))) (; ";"))) (expression_statement "sVar9 = strlen((char *)param_2);" (assignment_expression "sVar9 = strlen((char *)param_2)" (identifier "sVar9") (= "=") (call_expression "strlen((char *)param_2)" (identifier "strlen") (argument_list "((char *)param_2)" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) () ")")))) (; ";")) (if_statement "if (sVar9 == 4) {\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }" (if "if") (parenthesized_expression "(sVar9 == 4)" (( "(") (binary_expression "sVar9 == 4" (identifier "sVar9") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);\n          do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);\nLAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }\n        }" ({ "{") (expression_statement "local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40)" (identifier "local_1160") (= "=") (cast_expression "(Elf32_Ehdr *)(uint)(bVar2 == 0x40)" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(bVar2 == 0x40)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar2 == 0x40)" (( "(") (binary_expression "bVar2 == 0x40" (identifier "bVar2") (== "==") (number_literal "0x40")) () ")"))))) (; ";")) (do_statement "do {\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          } while (*param_2 != 0);" (do "do") (compound_statement "{\n            iVar10 = (int)(char)*param_2;\n            uVar19 = (int)local_1160 << 4;\n            if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }\n            param_2 = param_2 + 1;\n          }" ({ "{") (expression_statement "iVar10 = (int)(char)*param_2;" (assignment_expression "iVar10 = (int)(char)*param_2" (identifier "iVar10") (= "=") (cast_expression "(int)(char)*param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))))) (; ";")) (expression_statement "uVar19 = (int)local_1160 << 4;" (assignment_expression "uVar19 = (int)local_1160 << 4" (identifier "uVar19") (= "=") (binary_expression "(int)local_1160 << 4" (cast_expression "(int)local_1160" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_1160")) (<< "<<") (number_literal "4"))) (; ";")) (if_statement "if (iVar10 - 0x30U < 10) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }\n            else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" (if "if") (parenthesized_expression "(iVar10 - 0x30U < 10)" (( "(") (binary_expression "iVar10 - 0x30U < 10" (binary_expression "iVar10 - 0x30U" (identifier "iVar10") (- "-") (number_literal "0x30U")) (< "<") (number_literal "10")) () ")")) (compound_statement "{\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);\n            }" ({ "{") (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U)" (identifier "local_1160") (= "=") (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U)" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar19 | iVar10 - 0x30U)" (( "(") (binary_expression "uVar19 | iVar10 - 0x30U" (identifier "uVar19") (| "|") (binary_expression "iVar10 - 0x30U" (identifier "iVar10") (- "-") (number_literal "0x30U"))) () ")")))) (; ";")) (} "}")) (else_clause "else if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" (else "else") (if_statement "if (iVar10 - 0x41U < 6) {\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }\n            else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" (if "if") (parenthesized_expression "(iVar10 - 0x41U < 6)" (( "(") (binary_expression "iVar10 - 0x41U < 6" (binary_expression "iVar10 - 0x41U" (identifier "iVar10") (- "-") (number_literal "0x41U")) (< "<") (number_literal "6")) () ")")) (compound_statement "{\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);\n            }" ({ "{") (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U)" (identifier "local_1160") (= "=") (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U)" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar19 | iVar10 - 0x37U)" (( "(") (binary_expression "uVar19 | iVar10 - 0x37U" (identifier "uVar19") (| "|") (binary_expression "iVar10 - 0x37U" (identifier "iVar10") (- "-") (number_literal "0x37U"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" (else "else") (compound_statement "{\n              if (5 < iVar10 - 0x61U) goto LAB_00123f58;\n              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);\n            }" ({ "{") (if_statement "if (5 < iVar10 - 0x61U) goto LAB_00123f58;" (if "if") (parenthesized_expression "(5 < iVar10 - 0x61U)" (( "(") (binary_expression "5 < iVar10 - 0x61U" (number_literal "5") (< "<") (binary_expression "iVar10 - 0x61U" (identifier "iVar10") (- "-") (number_literal "0x61U"))) () ")")) (goto_statement "goto LAB_00123f58;" (goto "goto") (statement_identifier "LAB_00123f58") (; ";"))) (expression_statement "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);" (assignment_expression "local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U)" (identifier "local_1160") (= "=") (cast_expression "(Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U)" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar19 | iVar10 - 0x57U)" (( "(") (binary_expression "uVar19 | iVar10 - 0x57U" (identifier "uVar19") (| "|") (binary_expression "iVar10 - 0x57U" (identifier "iVar10") (- "-") (number_literal "0x57U"))) () ")")))) (; ";")) (} "}")))))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*param_2 != 0)" (( "(") (binary_expression "*param_2 != 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_00123f24:\n          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" (statement_identifier "LAB_00123f24") (: ":") (if_statement "if (local_1160 != (Elf32_Ehdr *)0xffffffff) {\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" (if "if") (parenthesized_expression "(local_1160 != (Elf32_Ehdr *)0xffffffff)" (( "(") (binary_expression "local_1160 != (Elf32_Ehdr *)0xffffffff" (identifier "local_1160") (!= "!=") (cast_expression "(Elf32_Ehdr *)0xffffffff" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n            local_1158 = 0;\n            goto LAB_00123f38;\n          }" ({ "{") (expression_statement "local_1158 = 0;" (assignment_expression "local_1158 = 0" (identifier "local_1158") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00123f38;" (goto "goto") (statement_identifier "LAB_00123f38") (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" (else "else") (compound_statement "{\n        if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }\nLAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);\n        if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }\n      }" ({ "{") (if_statement "if ((char)bVar2 < '$') {\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }\n        else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" (if "if") (parenthesized_expression "((char)bVar2 < '$')" (( "(") (binary_expression "(char)bVar2 < '$'" (cast_expression "(char)bVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar2")) (< "<") (char_literal "'$'" (' "'") (character "$") (' "'"))) () ")")) (compound_statement "{\n          local_1158 = 2;\n          local_1160 = (Elf32_Ehdr *)0x0;\n          if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }\n        }" ({ "{") (expression_statement "local_1158 = 2;" (assignment_expression "local_1158 = 2" (identifier "local_1158") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_1160 = (Elf32_Ehdr *)0x0;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x0" (identifier "local_1160") (= "=") (cast_expression "(Elf32_Ehdr *)0x0" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (bVar2 != 0x21) {\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }" (if "if") (parenthesized_expression "(bVar2 != 0x21)" (( "(") (binary_expression "bVar2 != 0x21" (identifier "bVar2") (!= "!=") (number_literal "0x21")) () ")")) (compound_statement "{\nLAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;\n            pcVar18 = "exif:InteroperabilityIndex";\n            do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);\n            goto LAB_00123f58;\n          }" ({ "{") (labeled_statement "LAB_00123f95:\n            local_1160 = (Elf32_Ehdr *)0x1;" (statement_identifier "LAB_00123f95") (: ":") (expression_statement "local_1160 = (Elf32_Ehdr *)0x1;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x1" (identifier "local_1160") (= "=") (cast_expression "(Elf32_Ehdr *)0x1" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";"))) (expression_statement "pcVar18 = "exif:InteroperabilityIndex";" (assignment_expression "pcVar18 = "exif:InteroperabilityIndex"" (identifier "pcVar18") (= "=") (string_literal ""exif:InteroperabilityIndex"" (" """) (string_content "exif:InteroperabilityIndex") (" """))) (; ";")) (do_statement "do {\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            } while (local_1160 != (Elf32_Ehdr *)0x0);" (do "do") (compound_statement "{\n              iVar10 = LocaleCompare(pcVar18,param_2);\n              if (iVar10 == 0) goto LAB_00123f24;\n              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);\n              pcVar18 = pcVar18 + 0x28;\n            }" ({ "{") (expression_statement "iVar10 = LocaleCompare(pcVar18,param_2);" (assignment_expression "iVar10 = LocaleCompare(pcVar18,param_2)" (identifier "iVar10") (= "=") (call_expression "LocaleCompare(pcVar18,param_2)" (identifier "LocaleCompare") (argument_list "(pcVar18,param_2)" (( "(") (identifier "pcVar18") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar10 == 0) goto LAB_00123f24;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00123f24;" (goto "goto") (statement_identifier "LAB_00123f24") (; ";"))) (expression_statement "local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);" (assignment_expression "local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24)" (identifier "local_1160") (= "=") (pointer_expression "*(Elf32_Ehdr **)(pcVar18 + 0x24)" (* "*") (cast_expression "(Elf32_Ehdr **)(pcVar18 + 0x24)" (( "(") (type_descriptor "Elf32_Ehdr **" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x24)" (( "(") (binary_expression "pcVar18 + 0x24" (identifier "pcVar18") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "pcVar18 = pcVar18 + 0x28;" (assignment_expression "pcVar18 = pcVar18 + 0x28" (identifier "pcVar18") (= "=") (binary_expression "pcVar18 + 0x28" (identifier "pcVar18") (+ "+") (number_literal "0x28"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_1160 != (Elf32_Ehdr *)0x0)" (( "(") (binary_expression "local_1160 != (Elf32_Ehdr *)0x0" (identifier "local_1160") (!= "!=") (cast_expression "(Elf32_Ehdr *)0x0" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (goto_statement "goto LAB_00123f58;" (goto "goto") (statement_identifier "LAB_00123f58") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" (else "else") (compound_statement "{\n          if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }\n          local_1158 = 1;\n          local_1160 = (Elf32_Ehdr *)0x0;\n        }" ({ "{") (if_statement "if (bVar2 != 0x2a) {\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }" (if "if") (parenthesized_expression "(bVar2 != 0x2a)" (( "(") (binary_expression "bVar2 != 0x2a" (identifier "bVar2") (!= "!=") (number_literal "0x2a")) () ")")) (compound_statement "{\n            if (bVar2 != 0x40) goto LAB_00123f95;\n            goto LAB_00123edc;\n          }" ({ "{") (if_statement "if (bVar2 != 0x40) goto LAB_00123f95;" (if "if") (parenthesized_expression "(bVar2 != 0x40)" (( "(") (binary_expression "bVar2 != 0x40" (identifier "bVar2") (!= "!=") (number_literal "0x40")) () ")")) (goto_statement "goto LAB_00123f95;" (goto "goto") (statement_identifier "LAB_00123f95") (; ";"))) (goto_statement "goto LAB_00123edc;" (goto "goto") (statement_identifier "LAB_00123edc") (; ";")) (} "}"))) (expression_statement "local_1158 = 1;" (assignment_expression "local_1158 = 1" (identifier "local_1158") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_1160 = (Elf32_Ehdr *)0x0;" (assignment_expression "local_1160 = (Elf32_Ehdr *)0x0" (identifier "local_1160") (= "=") (cast_expression "(Elf32_Ehdr *)0x0" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (labeled_statement "LAB_00123f38:\n        uVar19 = GetStringInfoLength(iVar7);" (statement_identifier "LAB_00123f38") (: ":") (expression_statement "uVar19 = GetStringInfoLength(iVar7);" (assignment_expression "uVar19 = GetStringInfoLength(iVar7)" (identifier "uVar19") (= "=") (call_expression "GetStringInfoLength(iVar7)" (identifier "GetStringInfoLength") (argument_list "(iVar7)" (( "(") (identifier "iVar7") () ")")))) (; ";"))) (if_statement "if (5 < uVar19) {\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }" (if "if") (parenthesized_expression "(5 < uVar19)" (( "(") (binary_expression "5 < uVar19" (number_literal "5") (< "<") (identifier "uVar19")) () ")")) (compound_statement "{\n          puVar11 = (ushort *)GetStringInfoDatum(iVar7);\n          do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);\n        }" ({ "{") (expression_statement "puVar11 = (ushort *)GetStringInfoDatum(iVar7);" (assignment_expression "puVar11 = (ushort *)GetStringInfoDatum(iVar7)" (identifier "puVar11") (= "=") (cast_expression "(ushort *)GetStringInfoDatum(iVar7)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "GetStringInfoDatum(iVar7)" (identifier "GetStringInfoDatum") (argument_list "(iVar7)" (( "(") (identifier "iVar7") () ")"))))) (; ";")) (do_statement "do {\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          } while (uVar19 != 0);" (do "do") (compound_statement "{\n            cVar3 = (char)*puVar11;\n            puVar16 = puVar11;\n            uVar4 = uVar19;\n            while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }\n            if (uVar19 == 0) break;\n            uVar19 = uVar4 - 2;\n            if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }\n          }" ({ "{") (expression_statement "cVar3 = (char)*puVar11;" (assignment_expression "cVar3 = (char)*puVar11" (identifier "cVar3") (= "=") (cast_expression "(char)*puVar11" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")))) (; ";")) (expression_statement "puVar16 = puVar11;" (assignment_expression "puVar16 = puVar11" (identifier "puVar16") (= "=") (identifier "puVar11")) (; ";")) (expression_statement "uVar4 = uVar19;" (assignment_expression "uVar4 = uVar19" (identifier "uVar4") (= "=") (identifier "uVar19")) (; ";")) (while_statement "while (uVar19 = uVar4 - 1, cVar3 != 'E') {\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }" (while "while") (parenthesized_expression "(uVar19 = uVar4 - 1, cVar3 != 'E')" (( "(") (comma_expression "uVar19 = uVar4 - 1, cVar3 != 'E'" (assignment_expression "uVar19 = uVar4 - 1" (identifier "uVar19") (= "=") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1"))) (, ",") (binary_expression "cVar3 != 'E'" (identifier "cVar3") (!= "!=") (char_literal "'E'" (' "'") (character "E") (' "'")))) () ")")) (compound_statement "{\n              if (uVar19 == 0) goto LAB_00123f58;\n              puVar16 = (ushort *)((int)puVar16 + 1);\n              uVar4 = uVar19;\n              cVar3 = *(char *)puVar16;\n            }" ({ "{") (if_statement "if (uVar19 == 0) goto LAB_00123f58;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00123f58;" (goto "goto") (statement_identifier "LAB_00123f58") (; ";"))) (expression_statement "puVar16 = (ushort *)((int)puVar16 + 1);" (assignment_expression "puVar16 = (ushort *)((int)puVar16 + 1)" (identifier "puVar16") (= "=") (cast_expression "(ushort *)((int)puVar16 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 1)" (( "(") (binary_expression "(int)puVar16 + 1" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar4 = uVar19;" (assignment_expression "uVar4 = uVar19" (identifier "uVar4") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "cVar3 = *(char *)puVar16;" (assignment_expression "cVar3 = *(char *)puVar16" (identifier "cVar3") (= "=") (pointer_expression "*(char *)puVar16" (* "*") (cast_expression "(char *)puVar16" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar16")))) (; ";")) (} "}"))) (if_statement "if (uVar19 == 0) break;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar19 = uVar4 - 2;" (assignment_expression "uVar19 = uVar4 - 2" (identifier "uVar19") (= "=") (binary_expression "uVar4 - 2" (identifier "uVar4") (- "-") (number_literal "2"))) (; ";")) (if_statement "if (*(char *)((int)puVar16 + 1) == 'x') {\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }\n            else {\n              puVar11 = puVar16 + 1;\n            }" (if "if") (parenthesized_expression "(*(char *)((int)puVar16 + 1) == 'x')" (( "(") (binary_expression "*(char *)((int)puVar16 + 1) == 'x'" (pointer_expression "*(char *)((int)puVar16 + 1)" (* "*") (cast_expression "(char *)((int)puVar16 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 1)" (( "(") (binary_expression "(int)puVar16 + 1" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "1")) () ")")))) (== "==") (char_literal "'x'" (' "'") (character "x") (' "'"))) () ")")) (compound_statement "{\n              if (uVar19 == 0) break;\n              uVar19 = uVar4 - 3;\n              if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }\n            }" ({ "{") (if_statement "if (uVar19 == 0) break;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar19 = uVar4 - 3;" (assignment_expression "uVar19 = uVar4 - 3" (identifier "uVar19") (= "=") (binary_expression "uVar4 - 3" (identifier "uVar4") (- "-") (number_literal "3"))) (; ";")) (if_statement "if ((char)puVar16[1] == 'i') {\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }\n              else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" (if "if") (parenthesized_expression "((char)puVar16[1] == 'i')" (( "(") (binary_expression "(char)puVar16[1] == 'i'" (cast_expression "(char)puVar16[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]"))) (== "==") (char_literal "'i'" (' "'") (character "i") (' "'"))) () ")")) (compound_statement "{\n                if (uVar19 == 0) break;\n                uVar19 = uVar4 - 4;\n                if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }\n              }" ({ "{") (if_statement "if (uVar19 == 0) break;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar19 = uVar4 - 4;" (assignment_expression "uVar19 = uVar4 - 4" (identifier "uVar19") (= "=") (binary_expression "uVar4 - 4" (identifier "uVar4") (- "-") (number_literal "4"))) (; ";")) (if_statement "if (*(char *)((int)puVar16 + 3) == 'f') {\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }\n                else {\n                  puVar11 = puVar16 + 2;\n                }" (if "if") (parenthesized_expression "(*(char *)((int)puVar16 + 3) == 'f')" (( "(") (binary_expression "*(char *)((int)puVar16 + 3) == 'f'" (pointer_expression "*(char *)((int)puVar16 + 3)" (* "*") (cast_expression "(char *)((int)puVar16 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 3)" (( "(") (binary_expression "(int)puVar16 + 3" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "3")) () ")")))) (== "==") (char_literal "'f'" (' "'") (character "f") (' "'"))) () ")")) (compound_statement "{\n                  if (uVar19 == 0) break;\n                  uVar19 = uVar4 - 5;\n                  if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }\n                }" ({ "{") (if_statement "if (uVar19 == 0) break;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar19 = uVar4 - 5;" (assignment_expression "uVar19 = uVar4 - 5" (identifier "uVar19") (= "=") (binary_expression "uVar4 - 5" (identifier "uVar4") (- "-") (number_literal "5"))) (; ";")) (if_statement "if ((char)puVar16[2] == '\0') {\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }\n                  else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" (if "if") (parenthesized_expression "((char)puVar16[2] == '\0')" (( "(") (binary_expression "(char)puVar16[2] == '\0'" (cast_expression "(char)puVar16[2]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    if (uVar19 == 0) break;\n                    puVar11 = puVar16 + 3;\n                    uVar19 = uVar4 - 6;\n                    if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }\n                  }" ({ "{") (if_statement "if (uVar19 == 0) break;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar11 = puVar16 + 3;" (assignment_expression "puVar11 = puVar16 + 3" (identifier "puVar11") (= "=") (binary_expression "puVar16 + 3" (identifier "puVar16") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "uVar19 = uVar4 - 6;" (assignment_expression "uVar19 = uVar4 - 6" (identifier "uVar19") (= "=") (binary_expression "uVar4 - 6" (identifier "uVar4") (- "-") (number_literal "6"))) (; ";")) (if_statement "if (*(char *)((int)puVar16 + 5) == '\0') {\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }" (if "if") (parenthesized_expression "(*(char *)((int)puVar16 + 5) == '\0')" (( "(") (binary_expression "*(char *)((int)puVar16 + 5) == '\0'" (pointer_expression "*(char *)((int)puVar16 + 5)" (* "*") (cast_expression "(char *)((int)puVar16 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 5)" (( "(") (binary_expression "(int)puVar16 + 5" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                      if (uVar19 < 0x10) break;\n                      if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }\n                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }\n                      break;\n                    }" ({ "{") (if_statement "if (uVar19 < 0x10) break;" (if "if") (parenthesized_expression "(uVar19 < 0x10)" (( "(") (binary_expression "uVar19 < 0x10" (identifier "uVar19") (< "<") (number_literal "0x10")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (puVar16[3] == 0x4949) {\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }\n                      else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" (if "if") (parenthesized_expression "(puVar16[3] == 0x4949)" (( "(") (binary_expression "puVar16[3] == 0x4949" (subscript_expression "puVar16[3]" (identifier "puVar16") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0x4949")) () ")")) (compound_statement "{\n                        if (puVar16[4] != 0x2a) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 1;\n                      }" ({ "{") (if_statement "if (puVar16[4] != 0x2a) break;" (if "if") (parenthesized_expression "(puVar16[4] != 0x2a)" (( "(") (binary_expression "puVar16[4] != 0x2a" (subscript_expression "puVar16[4]" (identifier "puVar16") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0x2a")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar12 = *(uint *)(puVar16 + 5);" (assignment_expression "uVar12 = *(uint *)(puVar16 + 5)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(puVar16 + 5)" (* "*") (cast_expression "(uint *)(puVar16 + 5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 5)" (( "(") (binary_expression "puVar16 + 5" (identifier "puVar16") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "local_114c = 1;" (assignment_expression "local_114c = 1" (identifier "local_114c") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" (else "else") (compound_statement "{\n                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;\n                        uVar12 = *(uint *)(puVar16 + 5);\n                        local_114c = 2;\n                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;\n                      }" ({ "{") (if_statement "if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;" (if "if") (parenthesized_expression "((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00))" (( "(") (binary_expression "(puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)" (parenthesized_expression "(puVar16[3] != 0x4d4d)" (( "(") (binary_expression "puVar16[3] != 0x4d4d" (subscript_expression "puVar16[3]" (identifier "puVar16") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0x4d4d")) () ")")) (|| "||") (parenthesized_expression "(puVar16[4] != 0x2a00)" (( "(") (binary_expression "puVar16[4] != 0x2a00" (subscript_expression "puVar16[4]" (identifier "puVar16") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0x2a00")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar12 = *(uint *)(puVar16 + 5);" (assignment_expression "uVar12 = *(uint *)(puVar16 + 5)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(puVar16 + 5)" (* "*") (cast_expression "(uint *)(puVar16 + 5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 5)" (( "(") (binary_expression "puVar16 + 5" (identifier "puVar16") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "local_114c = 2;" (assignment_expression "local_114c = 2" (identifier "local_114c") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8\n                                 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}")))) (if_statement "if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }" (if "if") (parenthesized_expression "((-1 < (int)uVar12) && (uVar12 < uVar19))" (( "(") (binary_expression "(-1 < (int)uVar12) && (uVar12 < uVar19)" (parenthesized_expression "(-1 < (int)uVar12)" (( "(") (binary_expression "-1 < (int)uVar12" (number_literal "-1") (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (&& "&&") (parenthesized_expression "(uVar12 < uVar19)" (( "(") (binary_expression "uVar12 < uVar19" (identifier "uVar12") (< "<") (identifier "uVar19")) () ")"))) () ")")) (compound_statement "{\n                        local_1110 = (ushort *)(uVar12 + (int)puVar11);\n                        uVar13 = NewSplayTree(0,0,0,local_1110);\n                        local_1134 = 0;\n                        local_112c = 0;\n                        local_1150 = 0;\n                        local_1104 = 0;\n                        goto LAB_00124153;\n                      }" ({ "{") (expression_statement "local_1110 = (ushort *)(uVar12 + (int)puVar11);" (assignment_expression "local_1110 = (ushort *)(uVar12 + (int)puVar11)" (identifier "local_1110") (= "=") (cast_expression "(ushort *)(uVar12 + (int)puVar11)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar12 + (int)puVar11)" (( "(") (binary_expression "uVar12 + (int)puVar11" (identifier "uVar12") (+ "+") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11"))) () ")")))) (; ";")) (expression_statement "uVar13 = NewSplayTree(0,0,0,local_1110);" (assignment_expression "uVar13 = NewSplayTree(0,0,0,local_1110)" (identifier "uVar13") (= "=") (call_expression "NewSplayTree(0,0,0,local_1110)" (identifier "NewSplayTree") (argument_list "(0,0,0,local_1110)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "local_1110") () ")")))) (; ";")) (expression_statement "local_1134 = 0;" (assignment_expression "local_1134 = 0" (identifier "local_1134") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_112c = 0;" (assignment_expression "local_112c = 0" (identifier "local_112c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1150 = 0;" (assignment_expression "local_1150 = 0" (identifier "local_1150") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1104 = 0;" (assignment_expression "local_1104 = 0" (identifier "local_1104") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00124153;" (goto "goto") (statement_identifier "LAB_00124153") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" (else "else") (compound_statement "{\n                    puVar11 = (ushort *)((int)puVar16 + 5);\n                  }" ({ "{") (expression_statement "puVar11 = (ushort *)((int)puVar16 + 5);" (assignment_expression "puVar11 = (ushort *)((int)puVar16 + 5)" (identifier "puVar11") (= "=") (cast_expression "(ushort *)((int)puVar16 + 5)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 5)" (( "(") (binary_expression "(int)puVar16 + 5" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "5")) () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                  puVar11 = puVar16 + 2;\n                }" (else "else") (compound_statement "{\n                  puVar11 = puVar16 + 2;\n                }" ({ "{") (expression_statement "puVar11 = puVar16 + 2;" (assignment_expression "puVar11 = puVar16 + 2" (identifier "puVar11") (= "=") (binary_expression "puVar16 + 2" (identifier "puVar16") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" (else "else") (compound_statement "{\n                puVar11 = (ushort *)((int)puVar16 + 3);\n              }" ({ "{") (expression_statement "puVar11 = (ushort *)((int)puVar16 + 3);" (assignment_expression "puVar11 = (ushort *)((int)puVar16 + 3)" (identifier "puVar11") (= "=") (cast_expression "(ushort *)((int)puVar16 + 3)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 3)" (( "(") (binary_expression "(int)puVar16 + 3" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "3")) () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n              puVar11 = puVar16 + 1;\n            }" (else "else") (compound_statement "{\n              puVar11 = puVar16 + 1;\n            }" ({ "{") (expression_statement "puVar11 = puVar16 + 1;" (assignment_expression "puVar11 = puVar16 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (} "}"))) (labeled_statement "LAB_00123f58:\n  local_1104 = 0;" (statement_identifier "LAB_00123f58") (: ":") (expression_statement "local_1104 = 0;" (assignment_expression "local_1104 = 0" (identifier "local_1104") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_00123f5a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }" (statement_identifier "LAB_00123f5a") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_1104;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return local_1104;\n  }" ({ "{") (return_statement "return local_1104;" (return "return") (identifier "local_1104") (; ";")) (} "}")))) (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" (identifier "FUN_0029eab0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00124153:\n  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" (statement_identifier "LAB_00124153") (: ":") (if_statement "if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" (if "if") (parenthesized_expression "((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2))))" (( "(") (binary_expression "(puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))" (parenthesized_expression "(puVar11 <= local_1110)" (( "(") (binary_expression "puVar11 <= local_1110" (identifier "puVar11") (<= "<=") (identifier "local_1110")) () ")")) (&& "&&") (parenthesized_expression "(local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))" (( "(") (binary_expression "local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2))" (identifier "local_1110") (<= "<=") (cast_expression "(ushort *)((int)puVar16 + (uVar4 - 2))" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + (uVar4 - 2))" (( "(") (binary_expression "(int)puVar16 + (uVar4 - 2)" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (parenthesized_expression "(uVar4 - 2)" (( "(") (binary_expression "uVar4 - 2" (identifier "uVar4") (- "-") (number_literal "2")) () ")"))) () ")")))) () ")"))) () ")")) (compound_statement "{\n    uVar6 = *local_1110;\n    if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }\n    uVar12 = (uint)uVar6;\n    iVar7 = local_112c;\n    if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }\n    if (local_112c != 0) goto LAB_00124aba;\n  }" ({ "{") (expression_statement "uVar6 = *local_1110;" (assignment_expression "uVar6 = *local_1110" (identifier "uVar6") (= "=") (pointer_expression "*local_1110" (* "*") (identifier "local_1110"))) (; ";")) (if_statement "if (local_114c != 1) {\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }" (if "if") (parenthesized_expression "(local_114c != 1)" (( "(") (binary_expression "local_114c != 1" (identifier "local_114c") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      uVar6 = uVar6 << 8 | uVar6 >> 8;\n    }" ({ "{") (expression_statement "uVar6 = uVar6 << 8 | uVar6 >> 8;" (assignment_expression "uVar6 = uVar6 << 8 | uVar6 >> 8" (identifier "uVar6") (= "=") (binary_expression "uVar6 << 8 | uVar6 >> 8" (binary_expression "uVar6 << 8" (identifier "uVar6") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar6 >> 8" (identifier "uVar6") (>> ">>") (number_literal "8")))) (; ";")) (} "}"))) (expression_statement "uVar12 = (uint)uVar6;" (assignment_expression "uVar12 = (uint)uVar6" (identifier "uVar12") (= "=") (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "iVar7 = local_112c;" (assignment_expression "iVar7 = local_112c" (identifier "iVar7") (= "=") (identifier "local_112c")) (; ";")) (if_statement "if (local_1150 < uVar12) {\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }" (if "if") (parenthesized_expression "(local_1150 < uVar12)" (( "(") (binary_expression "local_1150 < uVar12" (identifier "local_1150") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n      puVar22 = local_1110 + local_1150 * 6 + 1;\n      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));\n      if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }\n    }" ({ "{") (expression_statement "puVar22 = local_1110 + local_1150 * 6 + 1;" (assignment_expression "puVar22 = local_1110 + local_1150 * 6 + 1" (identifier "puVar22") (= "=") (binary_expression "local_1110 + local_1150 * 6 + 1" (binary_expression "local_1110 + local_1150 * 6" (identifier "local_1110") (+ "+") (binary_expression "local_1150 * 6" (identifier "local_1150") (* "*") (number_literal "6"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));" (assignment_expression "puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc))" (identifier "puVar1") (= "=") (cast_expression "(ushort *)((int)puVar16 + (uVar4 - 0xc))" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + (uVar4 - 0xc))" (( "(") (binary_expression "(int)puVar16 + (uVar4 - 0xc)" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (parenthesized_expression "(uVar4 - 0xc)" (( "(") (binary_expression "uVar4 - 0xc" (identifier "uVar4") (- "-") (number_literal "0xc")) () ")"))) () ")")))) (; ";")) (if_statement "if (puVar22 <= puVar1) {\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }" (if "if") (parenthesized_expression "(puVar22 <= puVar1)" (( "(") (binary_expression "puVar22 <= puVar1" (identifier "puVar22") (<= "<=") (identifier "puVar1")) () ")")) (compound_statement "{\n        iVar10 = local_1150 * 0xc - (int)puVar22;\n        local_1144 = local_1110 + local_1150 * 6 + 7;\n        do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);\n      }" ({ "{") (expression_statement "iVar10 = local_1150 * 0xc - (int)puVar22;" (assignment_expression "iVar10 = local_1150 * 0xc - (int)puVar22" (identifier "iVar10") (= "=") (binary_expression "local_1150 * 0xc - (int)puVar22" (binary_expression "local_1150 * 0xc" (identifier "local_1150") (* "*") (number_literal "0xc")) (- "-") (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")))) (; ";")) (expression_statement "local_1144 = local_1110 + local_1150 * 6 + 7;" (assignment_expression "local_1144 = local_1110 + local_1150 * 6 + 7" (identifier "local_1144") (= "=") (binary_expression "local_1110 + local_1150 * 6 + 7" (binary_expression "local_1110 + local_1150 * 6" (identifier "local_1110") (+ "+") (binary_expression "local_1150 * 6" (identifier "local_1150") (* "*") (number_literal "6"))) (+ "+") (number_literal "7"))) (; ";")) (do_statement "do {\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        } while (bVar25);" (do "do") (compound_statement "{\n          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);\n          if (puVar14 == puVar22) break;\n          AddValueToSplayTree(uVar13,puVar22,puVar22);\n          if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }\n          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);\n          if ((int)pEVar23 < 0) break;\n          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;\n          if ((int)uVar17 < (int)pEVar23) break;\n          if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }\n          local_1150 = local_1150 + 1;\n          if (uVar12 == local_1150) break;\n          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));\n          bVar25 = local_1144 <= puVar1;\n          local_1144 = local_1144 + 6;\n        }" ({ "{") (expression_statement "puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);" (assignment_expression "puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22)" (identifier "puVar14") (= "=") (cast_expression "(ushort *)GetValueFromSplayTree(uVar13,puVar22)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "GetValueFromSplayTree(uVar13,puVar22)" (identifier "GetValueFromSplayTree") (argument_list "(uVar13,puVar22)" (( "(") (identifier "uVar13") (, ",") (identifier "puVar22") () ")"))))) (; ";")) (if_statement "if (puVar14 == puVar22) break;" (if "if") (parenthesized_expression "(puVar14 == puVar22)" (( "(") (binary_expression "puVar14 == puVar22" (identifier "puVar14") (== "==") (identifier "puVar22")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "AddValueToSplayTree(uVar13,puVar22,puVar22);" (call_expression "AddValueToSplayTree(uVar13,puVar22,puVar22)" (identifier "AddValueToSplayTree") (argument_list "(uVar13,puVar22,puVar22)" (( "(") (identifier "uVar13") (, ",") (identifier "puVar22") (, ",") (identifier "puVar22") () ")"))) (; ";")) (if_statement "if (local_114c == 1) {\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }\n          else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" (if "if") (parenthesized_expression "(local_114c == 1)" (( "(") (binary_expression "local_114c == 1" (identifier "local_114c") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            uVar6 = puVar22[1];\n            uVar5 = *puVar22;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);\n          }" ({ "{") (expression_statement "uVar6 = puVar22[1];" (assignment_expression "uVar6 = puVar22[1]" (identifier "uVar6") (= "=") (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = *puVar22;" (assignment_expression "uVar5 = *puVar22" (identifier "uVar5") (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (if_statement "if (0xb < (ushort)(uVar6 - 1)) break;" (if "if") (parenthesized_expression "(0xb < (ushort)(uVar6 - 1))" (( "(") (binary_expression "0xb < (ushort)(uVar6 - 1)" (number_literal "0xb") (< "<") (call_expression "(ushort)(uVar6 - 1)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar6 - 1)" (( "(") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1")) () ")")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);" (assignment_expression "pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2)" (identifier "pEVar23") (= "=") (pointer_expression "*(Elf32_Ehdr **)(puVar22 + 2)" (* "*") (cast_expression "(Elf32_Ehdr **)(puVar22 + 2)" (( "(") (type_descriptor "Elf32_Ehdr **" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 2)" (( "(") (binary_expression "puVar22 + 2" (identifier "puVar22") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" (else "else") (compound_statement "{\n            uVar5 = *puVar22 << 8 | *puVar22 >> 8;\n            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;\n            if (0xb < (ushort)(uVar6 - 1)) break;\n            uVar17 = *(uint *)(puVar22 + 2);\n            pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);\n          }" ({ "{") (expression_statement "uVar5 = *puVar22 << 8 | *puVar22 >> 8;" (assignment_expression "uVar5 = *puVar22 << 8 | *puVar22 >> 8" (identifier "uVar5") (= "=") (binary_expression "*puVar22 << 8 | *puVar22 >> 8" (binary_expression "*puVar22 << 8" (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*puVar22 >> 8" (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (>> ">>") (number_literal "8")))) (; ";")) (expression_statement "uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;" (assignment_expression "uVar6 = puVar22[1] << 8 | puVar22[1] >> 8" (identifier "uVar6") (= "=") (binary_expression "puVar22[1] << 8 | puVar22[1] >> 8" (binary_expression "puVar22[1] << 8" (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "puVar22[1] >> 8" (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]")) (>> ">>") (number_literal "8")))) (; ";")) (if_statement "if (0xb < (ushort)(uVar6 - 1)) break;" (if "if") (parenthesized_expression "(0xb < (ushort)(uVar6 - 1))" (( "(") (binary_expression "0xb < (ushort)(uVar6 - 1)" (number_literal "0xb") (< "<") (call_expression "(ushort)(uVar6 - 1)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar6 - 1)" (( "(") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1")) () ")")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar17 = *(uint *)(puVar22 + 2);" (assignment_expression "uVar17 = *(uint *)(puVar22 + 2)" (identifier "uVar17") (= "=") (pointer_expression "*(uint *)(puVar22 + 2)" (* "*") (cast_expression "(uint *)(puVar22 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 2)" (( "(") (binary_expression "puVar22 + 2" (identifier "puVar22") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18);" (assignment_expression "pEVar23 = (Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" (identifier "pEVar23") (= "=") (cast_expression "(Elf32_Ehdr *)\n                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18)" (( "(") (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                      uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" (identifier "uVar17") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" (( "(") (binary_expression "uVar17 & 0xff0000" (identifier "uVar17") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" (( "(") (binary_expression "uVar17 & 0xff00" (identifier "uVar17") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar17 << 0x18" (identifier "uVar17") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (} "}")))) (expression_statement "local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);" (assignment_expression "local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134)" (identifier "local_1148") (= "=") (cast_expression "(Elf32_Ehdr *)(uVar5 + local_1134)" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + local_1134)" (( "(") (binary_expression "uVar5 + local_1134" (identifier "uVar5") (+ "+") (identifier "local_1134")) () ")")))) (; ";")) (if_statement "if ((int)pEVar23 < 0) break;" (if "if") (parenthesized_expression "((int)pEVar23 < 0)" (( "(") (binary_expression "(int)pEVar23 < 0" (cast_expression "(int)pEVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pEVar23")) (< "<") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;" (assignment_expression "uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23" (identifier "uVar17") (= "=") (binary_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23" (pointer_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" (* "*") (cast_expression "(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_002c0c20 + (uint)uVar6 * 4)" (( "(") (binary_expression "&DAT_002c0c20 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c0c20" (& "&") (identifier "DAT_002c0c20")) (+ "+") (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (* "*") (number_literal "4"))) () ")")))) (* "*") (cast_expression "(int)pEVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pEVar23")))) (; ";")) (if_statement "if ((int)uVar17 < (int)pEVar23) break;" (if "if") (parenthesized_expression "((int)uVar17 < (int)pEVar23)" (( "(") (binary_expression "(int)uVar17 < (int)pEVar23" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (< "<") (cast_expression "(int)pEVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pEVar23"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((int)uVar17 < 5) {\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }\n          else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" (if "if") (parenthesized_expression "((int)uVar17 < 5)" (( "(") (binary_expression "(int)uVar17 < 5" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n            local_1140 = puVar22 + 4;\nLAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }\n            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }\n          }" ({ "{") (expression_statement "local_1140 = puVar22 + 4;" (assignment_expression "local_1140 = puVar22 + 4" (identifier "local_1140") (= "=") (binary_expression "puVar22 + 4" (identifier "puVar22") (+ "+") (number_literal "4"))) (; ";")) (labeled_statement "LAB_001241d4:\n            if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" (statement_identifier "LAB_001241d4") (: ":") (if_statement "if ((local_1158 != 0) || (local_1160 == local_1148)) {\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" (if "if") (parenthesized_expression "((local_1158 != 0) || (local_1160 == local_1148))" (( "(") (binary_expression "(local_1158 != 0) || (local_1160 == local_1148)" (parenthesized_expression "(local_1158 != 0)" (( "(") (binary_expression "local_1158 != 0" (identifier "local_1158") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_1160 == local_1148)" (( "(") (binary_expression "local_1160 == local_1148" (identifier "local_1160") (== "==") (identifier "local_1148")) () ")"))) () ")")) (compound_statement "{\n              if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;\n              local_1020 = 0;\n              if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }\n              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);\n              if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }\n            }" ({ "{") (if_statement "if ((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)) break;" (if "if") (parenthesized_expression "((local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140))" (( "(") (binary_expression "(local_1140 < puVar11) ||\n                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)" (parenthesized_expression "(local_1140 < puVar11)" (( "(") (binary_expression "local_1140 < puVar11" (identifier "local_1140") (< "<") (identifier "puVar11")) () ")")) (|| "||") (parenthesized_expression "((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140)" (( "(") (binary_expression "(ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <\n                  local_1140" (cast_expression "(ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11)" (( "(") (binary_expression "(uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11" (parenthesized_expression "(uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4))" (( "(") (binary_expression "uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" (identifier "uVar19") (- "-") (pointer_expression "*(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" (* "*") (cast_expression "(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_002c0c20 + (uint)uVar6 * 4)" (( "(") (binary_expression "&DAT_002c0c20 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c0c20" (& "&") (identifier "DAT_002c0c20")) (+ "+") (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (* "*") (number_literal "4"))) () ")"))))) () ")")) (+ "+") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11"))) () ")"))) (< "<") (identifier "local_1140")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_1020 = 0;" (assignment_expression "local_1020 = 0" (identifier "local_1020") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar6 < 0xd) {\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }" (if "if") (parenthesized_expression "(uVar6 < 0xd)" (( "(") (binary_expression "uVar6 < 0xd" (identifier "uVar6") (< "<") (number_literal "0xd")) () ")")) (compound_statement "{\n                    \n                    \n                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();\n                return uVar13;\n              }" ({ "{") (expression_statement "uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ();" (assignment_expression "uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ()" (identifier "uVar13") (= "=") (call_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))\n                                   ()" (parenthesized_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))" (( "(") (pointer_expression "*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" (* "*") (cast_expression "(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4))" (( "(") (binary_expression "(int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" (cast_expression "(int)&__DT_PLTGOT" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (+ "+") (pointer_expression "*(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" (* "*") (cast_expression "(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_002c05b8 + (uint)uVar6 * 4)" (( "(") (binary_expression "&DAT_002c05b8 + (uint)uVar6 * 4" (pointer_expression "&DAT_002c05b8" (& "&") (identifier "DAT_002c05b8")) (+ "+") (binary_expression "(uint)uVar6 * 4" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar13;" (return "return") (identifier "uVar13") (; ";")) (} "}"))) (expression_statement "puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);" (assignment_expression "puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11)" (identifier "puVar14") (= "=") (cast_expression "(ushort *)((uVar19 - uVar17) + (int)puVar11)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar19 - uVar17) + (int)puVar11)" (( "(") (binary_expression "(uVar19 - uVar17) + (int)puVar11" (parenthesized_expression "(uVar19 - uVar17)" (( "(") (binary_expression "uVar19 - uVar17" (identifier "uVar19") (- "-") (identifier "uVar17")) () ")")) (+ "+") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11"))) () ")")))) (; ";")) (if_statement "if (local_1140 <= puVar14) {\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }" (if "if") (parenthesized_expression "(local_1140 <= puVar14)" (( "(") (binary_expression "local_1140 <= puVar14" (identifier "local_1140") (<= "<=") (identifier "puVar14")) () ")")) (compound_statement "{\n                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);\n                iVar20 = 0;\n                if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }\n              }" ({ "{") (expression_statement "iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);" (assignment_expression "iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14)" (identifier "iVar15") (= "=") (call_expression "AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14)" (identifier "AcquireQuantumMemory") (argument_list "(uVar17 + 1,1,puVar14,puVar14)" (( "(") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1")) (, ",") (number_literal "1") (, ",") (identifier "puVar14") (, ",") (identifier "puVar14") () ")")))) (; ";")) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar15 != 0) {\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }\n                  *(undefined1 *)(iVar15 + uVar17) = 0;\n                  local_10e4 = AcquireString(param_2);\n                  if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }\n                  if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }\n                  DestroyString(iVar15);\n                  DestroyString(local_10e4);\n                  local_1104 = 1;\n                }" ({ "{") (for_statement "for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }" (for "for") (( "(") (; ";") (binary_expression "iVar20 < (int)uVar17" (identifier "iVar20") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) (; ";") (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;\n                    bVar2 = *(byte *)((int)local_1140 + iVar20);\n                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;\n                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }\n                  }" ({ "{") (expression_statement "*(undefined1 *)(iVar15 + iVar20) = 0x2e;" (assignment_expression "*(undefined1 *)(iVar15 + iVar20) = 0x2e" (pointer_expression "*(undefined1 *)(iVar15 + iVar20)" (* "*") (cast_expression "(undefined1 *)(iVar15 + iVar20)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + iVar20)" (( "(") (binary_expression "iVar15 + iVar20" (identifier "iVar15") (+ "+") (identifier "iVar20")) () ")")))) (= "=") (number_literal "0x2e")) (; ";")) (expression_statement "bVar2 = *(byte *)((int)local_1140 + iVar20);" (assignment_expression "bVar2 = *(byte *)((int)local_1140 + iVar20)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((int)local_1140 + iVar20)" (* "*") (cast_expression "(byte *)((int)local_1140 + iVar20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_1140 + iVar20)" (( "(") (binary_expression "(int)local_1140 + iVar20" (cast_expression "(int)local_1140" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_1140")) (+ "+") (identifier "iVar20")) () ")"))))) (; ";")) (expression_statement "pEVar23 = (Elf32_Ehdr *)*ppuVar8;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)*ppuVar8" (identifier "pEVar23") (= "=") (cast_expression "(Elf32_Ehdr *)*ppuVar8" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*ppuVar8" (* "*") (identifier "ppuVar8")))) (; ";")) (if_statement "if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       ) {\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }" (if "if") (parenthesized_expression "(((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)\n                       )" (( "(") (binary_expression "((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)" (parenthesized_expression "((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0)" (( "(") (binary_expression "(pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0" (parenthesized_expression "(pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U)" (( "(") (binary_expression "pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U" (subscript_expression "pEVar23->e_ident_magic_str[(uint)bVar2 * 2]" (field_expression "pEVar23->e_ident_magic_str" (identifier "pEVar23") (-> "->") (field_identifier "e_ident_magic_str")) ([ "[") (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "0x40U")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                      *(byte *)(iVar15 + iVar20) = bVar2;\n                    }" ({ "{") (expression_statement "*(byte *)(iVar15 + iVar20) = bVar2;" (assignment_expression "*(byte *)(iVar15 + iVar20) = bVar2" (pointer_expression "*(byte *)(iVar15 + iVar20)" (* "*") (cast_expression "(byte *)(iVar15 + iVar20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + iVar20)" (( "(") (binary_expression "iVar15 + iVar20" (identifier "iVar15") (+ "+") (identifier "iVar20")) () ")")))) (= "=") (identifier "bVar2")) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined1 *)(iVar15 + uVar17) = 0;" (assignment_expression "*(undefined1 *)(iVar15 + uVar17) = 0" (pointer_expression "*(undefined1 *)(iVar15 + uVar17)" (* "*") (cast_expression "(undefined1 *)(iVar15 + uVar17)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + uVar17)" (( "(") (binary_expression "iVar15 + uVar17" (identifier "iVar15") (+ "+") (identifier "uVar17")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_10e4 = AcquireString(param_2);" (assignment_expression "local_10e4 = AcquireString(param_2)" (identifier "local_10e4") (= "=") (call_expression "AcquireString(param_2)" (identifier "AcquireString") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (local_1158 == 1) {\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }\n                  else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" (if "if") (parenthesized_expression "(local_1158 == 1)" (( "(") (binary_expression "local_1158 == 1" (identifier "local_1158") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }\n                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);\n                    pEVar23 = local_1148;\nLAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }\n                  }" ({ "{") (if_statement "if (local_1148 == (Elf32_Ehdr *)0x1) {\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }\n                    else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" (if "if") (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x1)" (( "(") (binary_expression "local_1148 == (Elf32_Ehdr *)0x1" (identifier "local_1148") (== "==") (cast_expression "(Elf32_Ehdr *)0x1" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n                      iVar20 = 0;\nLAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;\n                    }" ({ "{") (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00124bb8:\n                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;" (statement_identifier "LAB_00124bb8") (: ":") (expression_statement "pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;" (assignment_expression "pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28" (identifier "pcVar18") (= "=") (binary_expression ""exif:InteroperabilityIndex" + iVar20 * 0x28" (string_literal ""exif:InteroperabilityIndex"" (" """) (string_content "exif:InteroperabilityIndex") (" """)) (+ "+") (binary_expression "iVar20 * 0x28" (identifier "iVar20") (* "*") (number_literal "0x28")))) (; ";"))) (} "}")) (else_clause "else {\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" (else "else") (compound_statement "{\n                      iVar20 = 0;\n                      pEVar23 = (Elf32_Ehdr *)0x2;\n                      puVar21 = &DAT_002c0cb0;\n                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }\n                      pcVar18 = "unknown";\n                    }" ({ "{") (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "pEVar23 = (Elf32_Ehdr *)0x2;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)0x2" (identifier "pEVar23") (= "=") (cast_expression "(Elf32_Ehdr *)0x2" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "puVar21 = &DAT_002c0cb0;" (assignment_expression "puVar21 = &DAT_002c0cb0" (identifier "puVar21") (= "=") (pointer_expression "&DAT_002c0cb0" (& "&") (identifier "DAT_002c0cb0"))) (; ";")) (while_statement "while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }" (while "while") (parenthesized_expression "(iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0)" (( "(") (comma_expression "iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (, ",") (binary_expression "pEVar23 != (Elf32_Ehdr *)0x0" (identifier "pEVar23") (!= "!=") (cast_expression "(Elf32_Ehdr *)0x0" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n                        if (pEVar23 == local_1148) goto LAB_00124bb8;\n                        pEVar23 = (Elf32_Ehdr *)*puVar21;\n                        puVar21 = puVar21 + 10;\n                      }" ({ "{") (if_statement "if (pEVar23 == local_1148) goto LAB_00124bb8;" (if "if") (parenthesized_expression "(pEVar23 == local_1148)" (( "(") (binary_expression "pEVar23 == local_1148" (identifier "pEVar23") (== "==") (identifier "local_1148")) () ")")) (goto_statement "goto LAB_00124bb8;" (goto "goto") (statement_identifier "LAB_00124bb8") (; ";"))) (expression_statement "pEVar23 = (Elf32_Ehdr *)*puVar21;" (assignment_expression "pEVar23 = (Elf32_Ehdr *)*puVar21" (identifier "pEVar23") (= "=") (cast_expression "(Elf32_Ehdr *)*puVar21" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar21" (* "*") (identifier "puVar21")))) (; ";")) (expression_statement "puVar21 = puVar21 + 10;" (assignment_expression "puVar21 = puVar21 + 10" (identifier "puVar21") (= "=") (binary_expression "puVar21 + 10" (identifier "puVar21") (+ "+") (number_literal "10"))) (; ";")) (} "}"))) (expression_statement "pcVar18 = "unknown";" (assignment_expression "pcVar18 = "unknown"" (identifier "pcVar18") (= "=") (string_literal ""unknown"" (" """) (string_content "unknown") (" """))) (; ";")) (} "}")))) (expression_statement "FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);" (call_expression "FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18)" (identifier "FormatLocaleString") (argument_list "(local_10e4,0x1000,&DAT_002b6e4e,pcVar18)" (( "(") (identifier "local_10e4") (, ",") (number_literal "0x1000") (, ",") (pointer_expression "&DAT_002b6e4e" (& "&") (identifier "DAT_002b6e4e")) (, ",") (identifier "pcVar18") () ")"))) (; ";")) (expression_statement "pEVar23 = local_1148;" (assignment_expression "pEVar23 = local_1148" (identifier "pEVar23") (= "=") (identifier "local_1148")) (; ";")) (labeled_statement "LAB_00124b46:\n                    if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" (statement_identifier "LAB_00124b46") (: ":") (if_statement "if (local_112c == 2) {\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" (if "if") (parenthesized_expression "(local_112c == 2)" (( "(") (binary_expression "local_112c == 2" (identifier "local_112c") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);\n                    }" ({ "{") (expression_statement "SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);" (call_expression "SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23)" (identifier "SubstituteString") (argument_list "(&local_10e4,"exif:","exif:thumbnail:",pEVar23)" (( "(") (pointer_expression "&local_10e4" (& "&") (identifier "local_10e4")) (, ",") (string_literal ""exif:"" (" """) (string_content "exif:") (" """)) (, ",") (string_literal ""exif:thumbnail:"" (" """) (string_content "exif:thumbnail:") (" """)) (, ",") (identifier "pEVar23") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" (else "else") (compound_statement "{\n                    if (local_1158 != 2) goto LAB_00124b46;\n                    if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }\n                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);\n                  }" ({ "{") (if_statement "if (local_1158 != 2) goto LAB_00124b46;" (if "if") (parenthesized_expression "(local_1158 != 2)" (( "(") (binary_expression "local_1158 != 2" (identifier "local_1158") (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_00124b46;" (goto "goto") (statement_identifier "LAB_00124b46") (; ";"))) (if_statement "if (local_1148 < &Elf32_Ehdr_00010000) {\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }\n                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" (if "if") (parenthesized_expression "(local_1148 < &Elf32_Ehdr_00010000)" (( "(") (binary_expression "local_1148 < &Elf32_Ehdr_00010000" (identifier "local_1148") (< "<") (pointer_expression "&Elf32_Ehdr_00010000" (& "&") (identifier "Elf32_Ehdr_00010000"))) () ")")) (compound_statement "{\n                      pcVar18 = "#%04lx";\n                      pEVar23 = local_1148;\n                    }" ({ "{") (expression_statement "pcVar18 = "#%04lx";" (assignment_expression "pcVar18 = "#%04lx"" (identifier "pcVar18") (= "=") (string_literal ""#%04lx"" (" """) (string_content "#%04lx") (" """))) (; ";")) (expression_statement "pEVar23 = local_1148;" (assignment_expression "pEVar23 = local_1148" (identifier "pEVar23") (= "=") (identifier "local_1148")) (; ";")) (} "}")) (else_clause "else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" (else "else") (if_statement "if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }\n                    else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" (if "if") (parenthesized_expression "((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148)" (( "(") (binary_expression "(Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148" (cast_expression "(Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3)" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&__DT_REL[0x26c].r_offset + 3)" (( "(") (binary_expression "(int)&__DT_REL[0x26c].r_offset + 3" (cast_expression "(int)&__DT_REL[0x26c].r_offset" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&__DT_REL[0x26c].r_offset" (& "&") (field_expression "__DT_REL[0x26c].r_offset" (subscript_expression "__DT_REL[0x26c]" (identifier "__DT_REL") ([ "[") (number_literal "0x26c") (] "]")) (. ".") (field_identifier "r_offset")))) (+ "+") (number_literal "3")) () ")"))) (< "<") (identifier "local_1148")) () ")")) (compound_statement "{\n                      pcVar18 = "unknown";\n                      pEVar23 = extraout_ECX;\n                    }" ({ "{") (expression_statement "pcVar18 = "unknown";" (assignment_expression "pcVar18 = "unknown"" (identifier "pcVar18") (= "=") (string_literal ""unknown"" (" """) (string_content "unknown") (" """))) (; ";")) (expression_statement "pEVar23 = extraout_ECX;" (assignment_expression "pEVar23 = extraout_ECX" (identifier "pEVar23") (= "=") (identifier "extraout_ECX")) (; ";")) (} "}")) (else_clause "else {\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" (else "else") (compound_statement "{\n                      pcVar18 = "@%04lx";\n                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);\n                    }" ({ "{") (expression_statement "pcVar18 = "@%04lx";" (assignment_expression "pcVar18 = "@%04lx"" (identifier "pcVar18") (= "=") (string_literal ""@%04lx"" (" """) (string_content "@%04lx") (" """))) (; ";")) (expression_statement "pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);" (assignment_expression "pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff)" (identifier "pEVar23") (= "=") (cast_expression "(Elf32_Ehdr *)((uint)local_1148 & 0xffff)" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)local_1148 & 0xffff)" (( "(") (binary_expression "(uint)local_1148 & 0xffff" (cast_expression "(uint)local_1148" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_1148")) (& "&") (number_literal "0xffff")) () ")")))) (; ";")) (} "}")))))) (expression_statement "FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);" (call_expression "FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23)" (identifier "FormatLocaleString") (argument_list "(local_10e4,0x1000,pcVar18,pEVar23)" (( "(") (identifier "local_10e4") (, ",") (number_literal "0x1000") (, ",") (identifier "pcVar18") (, ",") (identifier "pEVar23") () ")"))) (; ";")) (} "}")))) (if_statement "if ((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)) {\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0))" (( "(") (binary_expression "(*(int *)(param_1 + 0x310) == 0) ||\n                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)" (parenthesized_expression "(*(int *)(param_1 + 0x310) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x310) == 0" (pointer_expression "*(int *)(param_1 + 0x310)" (* "*") (cast_expression "(int *)(param_1 + 0x310)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x310)" (( "(") (binary_expression "param_1 + 0x310" (identifier "param_1") (+ "+") (number_literal "0x310")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0)" (( "(") (comma_expression "iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),\n                     iVar20 == 0" (assignment_expression "iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4)" (identifier "iVar20") (= "=") (call_expression "GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4)" (identifier "GetValueFromSplayTree") (argument_list "(*(int *)(param_1 + 0x310),local_10e4)" (( "(") (pointer_expression "*(int *)(param_1 + 0x310)" (* "*") (cast_expression "(int *)(param_1 + 0x310)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x310)" (( "(") (binary_expression "param_1 + 0x310" (identifier "param_1") (+ "+") (number_literal "0x310")) () ")")))) (, ",") (identifier "local_10e4") () ")")))) (, ",") (binary_expression "iVar20 == 0" (identifier "iVar20") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                    SetImageProperty(param_1,local_10e4,iVar15,param_3);\n                  }" ({ "{") (expression_statement "SetImageProperty(param_1,local_10e4,iVar15,param_3);" (call_expression "SetImageProperty(param_1,local_10e4,iVar15,param_3)" (identifier "SetImageProperty") (argument_list "(param_1,local_10e4,iVar15,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "local_10e4") (, ",") (identifier "iVar15") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "DestroyString(iVar15);" (call_expression "DestroyString(iVar15)" (identifier "DestroyString") (argument_list "(iVar15)" (( "(") (identifier "iVar15") () ")"))) (; ";")) (expression_statement "DestroyString(local_10e4);" (call_expression "DestroyString(local_10e4)" (identifier "DestroyString") (argument_list "(local_10e4)" (( "(") (identifier "local_10e4") () ")"))) (; ";")) (expression_statement "local_1104 = 1;" (assignment_expression "local_1104 = 1" (identifier "local_1104") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (if_statement "if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)) {\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }" (if "if") (parenthesized_expression "(((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825))" (( "(") (binary_expression "((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||\n               (local_1148 == (Elf32_Ehdr *)0x8825)" (parenthesized_expression "((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005))" (( "(") (binary_expression "(local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)" (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x8769)" (( "(") (binary_expression "local_1148 == (Elf32_Ehdr *)0x8769" (identifier "local_1148") (== "==") (cast_expression "(Elf32_Ehdr *)0x8769" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x8769"))) () ")")) (|| "||") (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0xa005)" (( "(") (binary_expression "local_1148 == (Elf32_Ehdr *)0xa005" (identifier "local_1148") (== "==") (cast_expression "(Elf32_Ehdr *)0xa005" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xa005"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_1148 == (Elf32_Ehdr *)0x8825)" (( "(") (binary_expression "local_1148 == (Elf32_Ehdr *)0x8825" (identifier "local_1148") (== "==") (cast_expression "(Elf32_Ehdr *)0x8825" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x8825"))) () ")"))) () ")")) (compound_statement "{\n              uVar17 = FUN_00121780();\n              if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }\n              break;\n            }" ({ "{") (expression_statement "uVar17 = FUN_00121780();" (assignment_expression "uVar17 = FUN_00121780()" (identifier "uVar17") (= "=") (call_expression "FUN_00121780()" (identifier "FUN_00121780") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (uVar17 < uVar19) {\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }" (if "if") (parenthesized_expression "(uVar17 < uVar19)" (( "(") (binary_expression "uVar17 < uVar19" (identifier "uVar17") (< "<") (identifier "uVar19")) () ")")) (compound_statement "{\n                if (0xd < local_112c) goto LAB_00124aba;\n                uVar24 = 0x10000;\n                if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }\n                iVar7 = local_112c + 1;\n                local_10e0[local_112c * 3] = (uint)local_1110;\n                local_10e0[local_112c * 3 + 1] = local_1150 + 1;\n                local_10e0[local_112c * 3 + 2] = local_1134;\n                iVar10 = 0;\n                pcVar18 = (char *)((int)puVar11 + uVar17);\n                goto LAB_00124c76;\n              }" ({ "{") (if_statement "if (0xd < local_112c) goto LAB_00124aba;" (if "if") (parenthesized_expression "(0xd < local_112c)" (( "(") (binary_expression "0xd < local_112c" (number_literal "0xd") (< "<") (identifier "local_112c")) () ")")) (goto_statement "goto LAB_00124aba;" (goto "goto") (statement_identifier "LAB_00124aba") (; ";"))) (expression_statement "uVar24 = 0x10000;" (assignment_expression "uVar24 = 0x10000" (identifier "uVar24") (= "=") (number_literal "0x10000")) (; ";")) (if_statement "if (local_1148 != (Elf32_Ehdr *)0x8825) {\n                  uVar24 = 0;\n                }" (if "if") (parenthesized_expression "(local_1148 != (Elf32_Ehdr *)0x8825)" (( "(") (binary_expression "local_1148 != (Elf32_Ehdr *)0x8825" (identifier "local_1148") (!= "!=") (cast_expression "(Elf32_Ehdr *)0x8825" (( "(") (type_descriptor "Elf32_Ehdr *" (type_identifier "Elf32_Ehdr") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x8825"))) () ")")) (compound_statement "{\n                  uVar24 = 0;\n                }" ({ "{") (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" (identifier "uVar24") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar7 = local_112c + 1;" (assignment_expression "iVar7 = local_112c + 1" (identifier "iVar7") (= "=") (binary_expression "local_112c + 1" (identifier "local_112c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_10e0[local_112c * 3] = (uint)local_1110;" (assignment_expression "local_10e0[local_112c * 3] = (uint)local_1110" (subscript_expression "local_10e0[local_112c * 3]" (identifier "local_10e0") ([ "[") (binary_expression "local_112c * 3" (identifier "local_112c") (* "*") (number_literal "3")) (] "]")) (= "=") (cast_expression "(uint)local_1110" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_1110"))) (; ";")) (expression_statement "local_10e0[local_112c * 3 + 1] = local_1150 + 1;" (assignment_expression "local_10e0[local_112c * 3 + 1] = local_1150 + 1" (subscript_expression "local_10e0[local_112c * 3 + 1]" (identifier "local_10e0") ([ "[") (binary_expression "local_112c * 3 + 1" (binary_expression "local_112c * 3" (identifier "local_112c") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "local_1150 + 1" (identifier "local_1150") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_10e0[local_112c * 3 + 2] = local_1134;" (assignment_expression "local_10e0[local_112c * 3 + 2] = local_1134" (subscript_expression "local_10e0[local_112c * 3 + 2]" (identifier "local_10e0") ([ "[") (binary_expression "local_112c * 3 + 2" (binary_expression "local_112c * 3" (identifier "local_112c") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (identifier "local_1134")) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar18 = (char *)((int)puVar11 + uVar17);" (assignment_expression "pcVar18 = (char *)((int)puVar11 + uVar17)" (identifier "pcVar18") (= "=") (cast_expression "(char *)((int)puVar11 + uVar17)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + uVar17)" (( "(") (binary_expression "(int)puVar11 + uVar17" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (identifier "uVar17")) () ")")))) (; ";")) (goto_statement "goto LAB_00124c76;" (goto "goto") (statement_identifier "LAB_00124c76") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" (else "else") (compound_statement "{\n            uVar24 = *(uint *)(puVar22 + 4);\n            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;\n            if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }\n            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }\n          }" ({ "{") (expression_statement "uVar24 = *(uint *)(puVar22 + 4);" (assignment_expression "uVar24 = *(uint *)(puVar22 + 4)" (identifier "uVar24") (= "=") (pointer_expression "*(uint *)(puVar22 + 4)" (* "*") (cast_expression "(uint *)(puVar22 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 4)" (( "(") (binary_expression "puVar22 + 4" (identifier "puVar22") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18;" (assignment_expression "uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18" (identifier "uVar24") (= "=") (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |\n                     uVar24 << 0x18" (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8" (binary_expression "uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8" (binary_expression "uVar24 >> 0x18" (identifier "uVar24") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar24 & 0xff0000) >> 8" (parenthesized_expression "(uVar24 & 0xff0000)" (( "(") (binary_expression "uVar24 & 0xff0000" (identifier "uVar24") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar24 & 0xff00) << 8" (parenthesized_expression "(uVar24 & 0xff00)" (( "(") (binary_expression "uVar24 & 0xff00" (identifier "uVar24") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar24 << 0x18" (identifier "uVar24") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (local_114c == 1) {\n              uVar24 = *(uint *)(puVar22 + 4);\n            }" (if "if") (parenthesized_expression "(local_114c == 1)" (( "(") (binary_expression "local_114c == 1" (identifier "local_114c") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              uVar24 = *(uint *)(puVar22 + 4);\n            }" ({ "{") (expression_statement "uVar24 = *(uint *)(puVar22 + 4);" (assignment_expression "uVar24 = *(uint *)(puVar22 + 4)" (identifier "uVar24") (= "=") (pointer_expression "*(uint *)(puVar22 + 4)" (* "*") (cast_expression "(uint *)(puVar22 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 4)" (( "(") (binary_expression "puVar22 + 4" (identifier "puVar22") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))) {\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }" (if "if") (parenthesized_expression "((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24)))" (( "(") (binary_expression "(((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&\n               (!CARRY4(uVar17,uVar24))" (parenthesized_expression "(((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19))" (( "(") (binary_expression "((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)" (parenthesized_expression "((-1 < (int)uVar24) && (uVar24 < uVar19))" (( "(") (binary_expression "(-1 < (int)uVar24) && (uVar24 < uVar19)" (parenthesized_expression "(-1 < (int)uVar24)" (( "(") (binary_expression "-1 < (int)uVar24" (number_literal "-1") (< "<") (cast_expression "(int)uVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar24"))) () ")")) (&& "&&") (parenthesized_expression "(uVar24 < uVar19)" (( "(") (binary_expression "uVar24 < uVar19" (identifier "uVar24") (< "<") (identifier "uVar19")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar17 + uVar24 <= uVar19)" (( "(") (binary_expression "uVar17 + uVar24 <= uVar19" (binary_expression "uVar17 + uVar24" (identifier "uVar17") (+ "+") (identifier "uVar24")) (<= "<=") (identifier "uVar19")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(!CARRY4(uVar17,uVar24))" (( "(") (unary_expression "!CARRY4(uVar17,uVar24)" (! "!") (call_expression "CARRY4(uVar17,uVar24)" (identifier "CARRY4") (argument_list "(uVar17,uVar24)" (( "(") (identifier "uVar17") (, ",") (identifier "uVar24") () ")")))) () ")"))) () ")")) (compound_statement "{\n              local_1140 = (ushort *)(uVar24 + (int)puVar11);\n              goto LAB_001241d4;\n            }" ({ "{") (expression_statement "local_1140 = (ushort *)(uVar24 + (int)puVar11);" (assignment_expression "local_1140 = (ushort *)(uVar24 + (int)puVar11)" (identifier "local_1140") (= "=") (cast_expression "(ushort *)(uVar24 + (int)puVar11)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar24 + (int)puVar11)" (( "(") (binary_expression "uVar24 + (int)puVar11" (identifier "uVar24") (+ "+") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11"))) () ")")))) (; ";")) (goto_statement "goto LAB_001241d4;" (goto "goto") (statement_identifier "LAB_001241d4") (; ";")) (} "}"))) (} "}")))) (expression_statement "local_1150 = local_1150 + 1;" (assignment_expression "local_1150 = local_1150 + 1" (identifier "local_1150") (= "=") (binary_expression "local_1150 + 1" (identifier "local_1150") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar12 == local_1150) break;" (if "if") (parenthesized_expression "(uVar12 == local_1150)" (( "(") (binary_expression "uVar12 == local_1150" (identifier "uVar12") (== "==") (identifier "local_1150")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));" (assignment_expression "puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" (identifier "puVar22") (= "=") (cast_expression "(ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe))" (( "(") (binary_expression "(int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe)" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (cast_expression "(int)((int)local_1110 + iVar10 + 0xe)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)local_1110 + iVar10 + 0xe)" (( "(") (binary_expression "(int)local_1110 + iVar10 + 0xe" (binary_expression "(int)local_1110 + iVar10" (cast_expression "(int)local_1110" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_1110")) (+ "+") (identifier "iVar10")) (+ "+") (number_literal "0xe")) () ")")))) () ")")))) (; ";")) (expression_statement "bVar25 = local_1144 <= puVar1;" (assignment_expression "bVar25 = local_1144 <= puVar1" (identifier "bVar25") (= "=") (binary_expression "local_1144 <= puVar1" (identifier "local_1144") (<= "<=") (identifier "puVar1"))) (; ";")) (expression_statement "local_1144 = local_1144 + 6;" (assignment_expression "local_1144 = local_1144 + 6" (identifier "local_1144") (= "=") (binary_expression "local_1144 + 6" (identifier "local_1144") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar25)" (( "(") (identifier "bVar25") () ")")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_112c != 0) goto LAB_00124aba;" (if "if") (parenthesized_expression "(local_112c != 0)" (( "(") (binary_expression "local_112c != 0" (identifier "local_112c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00124aba;" (goto "goto") (statement_identifier "LAB_00124aba") (; ";"))) (} "}")))) (goto_statement "goto LAB_00124b97;" (goto "goto") (statement_identifier "LAB_00124b97") (; ";")) (while_statement "while (iVar10 = iVar10 + 1, iVar10 < iVar7) {\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }" (while "while") (parenthesized_expression "(iVar10 = iVar10 + 1, iVar10 < iVar7)" (( "(") (comma_expression "iVar10 = iVar10 + 1, iVar10 < iVar7" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar10 < iVar7" (identifier "iVar10") (< "<") (identifier "iVar7"))) () ")")) (compound_statement "{\nLAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }\n  }" ({ "{") (labeled_statement "LAB_00124c76:\n    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" (statement_identifier "LAB_00124c76") (: ":") (if_statement "if ((char *)local_10e0[iVar10 * 3] == pcVar18) {\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" (if "if") (parenthesized_expression "((char *)local_10e0[iVar10 * 3] == pcVar18)" (( "(") (binary_expression "(char *)local_10e0[iVar10 * 3] == pcVar18" (cast_expression "(char *)local_10e0[iVar10 * 3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_10e0[iVar10 * 3]" (identifier "local_10e0") ([ "[") (binary_expression "iVar10 * 3" (identifier "iVar10") (* "*") (number_literal "3")) (] "]"))) (== "==") (identifier "pcVar18")) () ")")) (compound_statement "{\n      pcVar18 = (char *)local_10e0[iVar10 * 3];\n      if (iVar10 < iVar7) goto LAB_00124aba;\n      break;\n    }" ({ "{") (expression_statement "pcVar18 = (char *)local_10e0[iVar10 * 3];" (assignment_expression "pcVar18 = (char *)local_10e0[iVar10 * 3]" (identifier "pcVar18") (= "=") (cast_expression "(char *)local_10e0[iVar10 * 3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_10e0[iVar10 * 3]" (identifier "local_10e0") ([ "[") (binary_expression "iVar10 * 3" (identifier "iVar10") (* "*") (number_literal "3")) (] "]")))) (; ";")) (if_statement "if (iVar10 < iVar7) goto LAB_00124aba;" (if "if") (parenthesized_expression "(iVar10 < iVar7)" (( "(") (binary_expression "iVar10 < iVar7" (identifier "iVar10") (< "<") (identifier "iVar7")) () ")")) (goto_statement "goto LAB_00124aba;" (goto "goto") (statement_identifier "LAB_00124aba") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}")))) (} "}"))) (expression_statement "local_10e0[iVar7 * 3] = (uint)pcVar18;" (assignment_expression "local_10e0[iVar7 * 3] = (uint)pcVar18" (subscript_expression "local_10e0[iVar7 * 3]" (identifier "local_10e0") ([ "[") (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3")) (] "]")) (= "=") (cast_expression "(uint)pcVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar18"))) (; ";")) (expression_statement "local_10e0[iVar7 * 3 + 2] = uVar24;" (assignment_expression "local_10e0[iVar7 * 3 + 2] = uVar24" (subscript_expression "local_10e0[iVar7 * 3 + 2]" (identifier "local_10e0") ([ "[") (binary_expression "iVar7 * 3 + 2" (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (identifier "uVar24")) (; ";")) (expression_statement "local_10e0[iVar7 * 3 + 1] = 0;" (assignment_expression "local_10e0[iVar7 * 3 + 1] = 0" (subscript_expression "local_10e0[iVar7 * 3 + 1]" (identifier "local_10e0") ([ "[") (binary_expression "iVar7 * 3 + 1" (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = local_112c + 2;" (assignment_expression "iVar7 = local_112c + 2" (identifier "iVar7") (= "=") (binary_expression "local_112c + 2" (identifier "local_112c") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }" (if "if") (parenthesized_expression "(((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19))))" (( "(") (binary_expression "((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))" (parenthesized_expression "((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0))" (( "(") (binary_expression "(local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&\n      (uVar12 = FUN_00121780(), uVar12 != 0)" (parenthesized_expression "(local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19))" (( "(") (binary_expression "local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)" (binary_expression "local_1110 + uVar12 * 6 + 3" (binary_expression "local_1110 + uVar12 * 6" (identifier "local_1110") (+ "+") (binary_expression "uVar12 * 6" (identifier "uVar12") (* "*") (number_literal "6"))) (+ "+") (number_literal "3")) (<= "<=") (cast_expression "(ushort *)((int)puVar11 + uVar19)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + uVar19)" (( "(") (binary_expression "(int)puVar11 + uVar19" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (identifier "uVar19")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(uVar12 = FUN_00121780(), uVar12 != 0)" (( "(") (comma_expression "uVar12 = FUN_00121780(), uVar12 != 0" (assignment_expression "uVar12 = FUN_00121780()" (identifier "uVar12") (= "=") (call_expression "FUN_00121780()" (identifier "FUN_00121780") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar7 < 0xe && (uVar12 < uVar19)))" (( "(") (parenthesized_expression "(iVar7 < 0xe && (uVar12 < uVar19))" (( "(") (binary_expression "iVar7 < 0xe && (uVar12 < uVar19)" (binary_expression "iVar7 < 0xe" (identifier "iVar7") (< "<") (number_literal "0xe")) (&& "&&") (parenthesized_expression "(uVar12 < uVar19)" (( "(") (binary_expression "uVar12 < uVar19" (identifier "uVar12") (< "<") (identifier "uVar19")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    local_10e0[iVar7 * 3 + 1] = 0;\n    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);\n    local_10e0[iVar7 * 3 + 2] = uVar24;\n    iVar7 = local_112c + 3;\n  }" ({ "{") (expression_statement "local_10e0[iVar7 * 3 + 1] = 0;" (assignment_expression "local_10e0[iVar7 * 3 + 1] = 0" (subscript_expression "local_10e0[iVar7 * 3 + 1]" (identifier "local_10e0") ([ "[") (binary_expression "iVar7 * 3 + 1" (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);" (assignment_expression "local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11)" (subscript_expression "local_10e0[iVar7 * 3]" (identifier "local_10e0") ([ "[") (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3")) (] "]")) (= "=") (call_expression "(uint)(uVar12 + (int)puVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar12 + (int)puVar11)" (( "(") (binary_expression "uVar12 + (int)puVar11" (identifier "uVar12") (+ "+") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11"))) () ")")))) (; ";")) (expression_statement "local_10e0[iVar7 * 3 + 2] = uVar24;" (assignment_expression "local_10e0[iVar7 * 3 + 2] = uVar24" (subscript_expression "local_10e0[iVar7 * 3 + 2]" (identifier "local_10e0") ([ "[") (binary_expression "iVar7 * 3 + 2" (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (identifier "uVar24")) (; ";")) (expression_statement "iVar7 = local_112c + 3;" (assignment_expression "iVar7 = local_112c + 3" (identifier "iVar7") (= "=") (binary_expression "local_112c + 3" (identifier "local_112c") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (labeled_statement "LAB_00124aba:\n  local_112c = iVar7;" (statement_identifier "LAB_00124aba") (: ":") (expression_statement "local_112c = iVar7;" (assignment_expression "local_112c = iVar7" (identifier "local_112c") (= "=") (identifier "iVar7")) (; ";"))) (expression_statement "local_112c = local_112c + -1;" (assignment_expression "local_112c = local_112c + -1" (identifier "local_112c") (= "=") (binary_expression "local_112c + -1" (identifier "local_112c") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_1110 = (ushort *)local_10e0[local_112c * 3];" (assignment_expression "local_1110 = (ushort *)local_10e0[local_112c * 3]" (identifier "local_1110") (= "=") (cast_expression "(ushort *)local_10e0[local_112c * 3]" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_10e0[local_112c * 3]" (identifier "local_10e0") ([ "[") (binary_expression "local_112c * 3" (identifier "local_112c") (* "*") (number_literal "3")) (] "]")))) (; ";")) (expression_statement "local_1150 = local_10e0[local_112c * 3 + 1];" (assignment_expression "local_1150 = local_10e0[local_112c * 3 + 1]" (identifier "local_1150") (= "=") (subscript_expression "local_10e0[local_112c * 3 + 1]" (identifier "local_10e0") ([ "[") (binary_expression "local_112c * 3 + 1" (binary_expression "local_112c * 3" (identifier "local_112c") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "local_1134 = local_10e0[local_112c * 3 + 2];" (assignment_expression "local_1134 = local_10e0[local_112c * 3 + 2]" (identifier "local_1134") (= "=") (subscript_expression "local_10e0[local_112c * 3 + 2]" (identifier "local_10e0") ([ "[") (binary_expression "local_112c * 3 + 2" (binary_expression "local_112c * 3" (identifier "local_112c") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]"))) (; ";")) (goto_statement "goto LAB_00124153;" (goto "goto") (statement_identifier "LAB_00124153") (; ";")) (labeled_statement "LAB_00124b97:\n  DestroySplayTree(uVar13);" (statement_identifier "LAB_00124b97") (: ":") (expression_statement "DestroySplayTree(uVar13);" (call_expression "DestroySplayTree(uVar13)" (identifier "DestroySplayTree") (argument_list "(uVar13)" (( "(") (identifier "uVar13") () ")"))) (; ";"))) (goto_statement "goto LAB_00123f5a;" (goto "goto") (statement_identifier "LAB_00123f5a") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */

type_1 __regparm3 function_1(type_2 *image,char *var_4,type_3 *exception)

{
  type_4 *var_30;
  int var_21;
  type_5 var_5;
  char var_17;
  size_t *psVar5;
  type_6 var_16;
  type_4 uVar7;
  type_4 var_27;
  type_7 *var_3;
  type_4 **ppuVar9;
  size_t var_8;
  int var_10;
  type_6 var_14;
  type_4 *var_23;
  type_6 var_19;
  type_8 *splay_tree;
  type_4 *var_32;
  type_1 MVar16;
  char *pcVar17;
  void *var_48;
  char *var_12;
  size_t var_43;
  type_4 *var_18;
  type_6 var_39;
  type_6 extraout_ECX;
  type_9 *var_55;
  int var_41;
  type_10 *var_44;
  int var_53;
  type_4 *var_29;
  type_6 var_34;
  ssize_t sVar28;
  int var_1;
  bool bVar29;
  type_6 var_9;
  int var_36;
  type_6 var_28;
  type_11 var_25;
  type_6 var_37;
  type_4 *var_54;
  type_4 *var_38;
  int var_35;
  int var_46;
  type_4 *var_24;
  type_1 local_1104;
  char *key;
  type_12 directory_stack [16];
  char buffer [4096];
  
  var_21 = *(int *)(var_1 + 0x14);
  var_3 = var_2(image,"exif");
  if (((var_3 != (type_7 *)0x0) && (var_4 != (char *)0x0)) &&
     (var_5 = *var_4, var_5 != 0)) {
    ppuVar9 = var_6();
    while ((*(type_5 *)((int)*ppuVar9 + (type_6)var_5 * 2 + 1) & 0x20) != 0) {
      var_4 = (char *)((type_5 *)var_4 + 1);
      var_5 = *var_4;
    }
    var_8 = var_7(var_4);
    if (5 < var_8) {
      var_5 = ((type_5 *)var_4)[5];
      if (var_5 == 0x23) {
LAB_00123edc:
        var_4 = (char *)((type_5 *)var_4 + 6);
        var_8 = var_7(var_4);
        if (var_8 == 4) {
          var_9 = (type_6)(var_5 == 0x40);
          do {
            var_10 = (int)*var_4;
            var_9 = var_9 << 4;
            if (var_10 - 0x30U < 10) {
              var_9 = var_9 | var_10 - 0x30U;
            }
            else if (var_10 - 0x41U < 6) {
              var_9 = var_9 | var_10 - 0x37U;
            }
            else {
              if (5 < var_10 - 0x61U) goto LAB_00123f58;
              var_9 = var_9 | var_10 - 0x57U;
            }
            var_4 = (char *)((type_5 *)var_4 + 1);
          } while (*var_4 != 0);
LAB_00123f24:
          if (var_9 != 0xffffffff) {
            var_36 = 0;
            goto LAB_00123f38;
          }
        }
      }
      else {
        if ((char)var_5 < '$') {
          var_36 = 2;
          var_9 = 0;
          if (var_5 != 0x21) {
LAB_00123f95:
            var_9 = 1;
            var_12 = function_1::EXIFTag[0].description;
            do {
              var_10 = var_11(var_12,var_4);
              if (var_10 == 0) goto LAB_00123f24;
              var_9 = *(type_6 *)(var_12 + 0x24);
              var_12 = var_12 + 0x28;
            } while (var_9 != 0);
            goto LAB_00123f58;
          }
        }
        else {
          if (var_5 != 0x2a) {
            if (var_5 != 0x40) goto LAB_00123f95;
            goto LAB_00123edc;
          }
          var_36 = 1;
          var_9 = 0;
        }
LAB_00123f38:
        var_14 = var_13(var_3);
        if (5 < var_14) {
          var_23 = (type_4 *)var_15(var_3);
          do {
            var_17 = (char)*var_23;
            var_18 = var_23;
            var_16 = var_14;
            while (var_14 = var_16 - 1, var_17 != 'E') {
              if (var_14 == 0) goto LAB_00123f58;
              var_18 = (type_4 *)((int)var_18 + 1);
              var_16 = var_14;
              var_17 = *(char *)var_18;
            }
            if (var_14 == 0) break;
            var_14 = var_16 - 2;
            if (*(char *)((int)var_18 + 1) == 'x') {
              if (var_14 == 0) break;
              var_14 = var_16 - 3;
              if ((char)var_18[1] == 'i') {
                if (var_14 == 0) break;
                var_14 = var_16 - 4;
                if (*(char *)((int)var_18 + 3) == 'f') {
                  if (var_14 == 0) break;
                  var_14 = var_16 - 5;
                  if ((char)var_18[2] == '\0') {
                    if (var_14 == 0) break;
                    var_23 = var_18 + 3;
                    var_14 = var_16 - 6;
                    if (*(char *)((int)var_18 + 5) == '\0') {
                      if (var_14 < 0x10) break;
                      if (var_18[3] == 0x4949) {
                        if (var_18[4] != 0x2a) break;
                        var_19 = *(type_6 *)(var_18 + 5);
                        var_25 = var_26;
                      }
                      else {
                        if ((var_18[3] != 0x4d4d) || (var_18[4] != 0x2a00)) break;
                        var_19 = *(type_6 *)(var_18 + 5);
                        var_25 = MSBEndian;
                        var_19 = var_19 >> 0x18 | (var_19 & 0xff0000) >> 8 | (var_19 & 0xff00) << 8
                                 | var_19 << 0x18;
                      }
                      if ((-1 < (int)var_19) && (var_19 < var_14)) {
                        var_24 = (type_4 *)(var_19 + (int)var_23);
                        splay_tree = var_20((type_13 *)0x0,
                                                  (type_14 *)0x0,
                                                  (type_14 *)0x0);
                        var_35 = 0;
                        var_46 = 0;
                        var_28 = 0;
                        local_1104 = MagickFalse;
                        goto LAB_00124153;
                      }
                      break;
                    }
                  }
                  else {
                    var_23 = (type_4 *)((int)var_18 + 5);
                  }
                }
                else {
                  var_23 = var_18 + 2;
                }
              }
              else {
                var_23 = (type_4 *)((int)var_18 + 3);
              }
            }
            else {
              var_23 = var_18 + 1;
            }
          } while (var_14 != 0);
        }
      }
    }
  }
LAB_00123f58:
  local_1104 = MagickFalse;
LAB_00123f5a:
  if (var_21 == *(int *)(var_1 + 0x14)) {
    return local_1104;
  }
                    /* WARNING: Subroutine does not return */
  var_22();
LAB_00124153:
  if ((var_23 <= var_24) && (var_24 <= (type_4 *)((int)var_18 + (var_16 - 2)))) {
    var_27 = *var_24;
    if (var_25 != var_26) {
      var_27 = var_27 << 8 | var_27 >> 8;
    }
    var_19 = (type_6)var_27;
    var_10 = var_46;
    if (var_28 < var_19) {
      var_29 = var_24 + var_28 * 6 + 1;
      var_30 = (type_4 *)((int)var_18 + (var_16 - 0xc));
      if (var_29 <= var_30) {
        var_53 = var_28 * 0xc - (int)var_29;
        var_54 = var_24 + var_28 * 6 + 7;
        do {
          var_32 = (type_4 *)var_31(splay_tree,var_29);
          if (var_32 == var_29) break;
          var_33(splay_tree,var_29,var_29);
          if (var_25 == var_26) {
            var_27 = var_29[1];
            uVar7 = *var_29;
            if (0xb < (type_4)(var_27 - 1)) break;
            var_34 = *(type_6 *)(var_29 + 2);
          }
          else {
            uVar7 = *var_29 << 8 | *var_29 >> 8;
            var_27 = var_29[1] << 8 | var_29[1] >> 8;
            if (0xb < (type_4)(var_27 - 1)) break;
            var_34 = *(type_6 *)(var_29 + 2);
            var_34 = var_34 >> 0x18 | (var_34 & 0xff0000) >> 8 | (var_34 & 0xff00) << 8 |
                     var_34 << 0x18;
          }
          var_37 = (type_6)uVar7 + var_35;
          if ((int)var_34 < 0) break;
          var_39 = function_1::tag_bytes[var_27] * var_34;
          if ((int)var_39 < (int)var_34) break;
          if ((int)var_39 < 5) {
            var_38 = var_29 + 4;
LAB_001241d4:
            if ((var_36 != 0) || (var_9 == var_37)) {
              if ((var_38 < var_23) ||
                 ((type_4 *)((var_14 - function_1::tag_bytes[var_27]) + (int)var_23) <
                  var_38)) break;
              if (var_27 < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */
                    /* WARNING: Treating indirect jump as call */
                MVar16 = (*(type_15 *)((int)&_GLOBAL_OFFSET_TABLE_ +
                                   *(int *)(&DAT_002c05b8 + (type_6)var_27 * 4)))();
                return MVar16;
              }
              if (var_38 <= (type_4 *)((var_14 - var_39) + (int)var_23)) {
                var_12 = (char *)var_40(var_39 + 1,1);
                var_41 = 0;
                if (var_12 != (char *)0x0) {
                  for (; var_41 < (int)var_39; var_41 = var_41 + 1) {
                    var_12[var_41] = '.';
                    var_5 = *(type_5 *)((int)var_38 + var_41);
                    if (((*(type_5 *)((int)*ppuVar9 + (type_6)var_5 * 2 + 1) & 0x40) != 0) ||
                       (var_5 == 0)) {
                      var_12[var_41] = var_5;
                    }
                  }
                  var_12[var_39] = '\0';
                  key = var_42(var_4);
                  if (var_36 == 1) {
                    if (var_37 == 1) {
                      var_41 = 0;
LAB_00124bb8:
                      pcVar17 = (char *)(var_41 * 0x28 + 0x2c0c64);
                    }
                    else {
                      var_44 = function_1::EXIFTag + 2;
                      var_41 = 0;
                      var_43 = 2;
                      while (var_41 = var_41 + 1, var_43 != 0) {
                        if (var_43 == var_37) goto LAB_00124bb8;
                        psVar5 = &var_44->tag;
                        var_44 = var_44 + 1;
                        var_43 = *psVar5;
                      }
                      pcVar17 = "unknown";
                    }
                    var_45(key,0x1000,"%s",pcVar17);
LAB_00124b46:
                    if (var_46 == 2) {
                      var_47(&key,"exif:","exif:thumbnail:");
                    }
                  }
                  else {
                    if (var_36 != 2) goto LAB_00124b46;
                    if (var_37 < 0x10000) {
                      pcVar17 = "#%04lx";
                      var_34 = var_37;
                    }
                    else if (var_37 < 0x20000) {
                      pcVar17 = "@%04lx";
                      var_34 = var_37 & 0xffff;
                    }
                    else {
                      pcVar17 = "unknown";
                      var_34 = extraout_ECX;
                    }
                    var_45(key,0x1000,pcVar17,var_34);
                  }
                  if (((type_8 *)image->properties == (type_8 *)0x0) ||
                     (var_48 = var_31((type_8 *)image->properties,key),
                     var_48 == (void *)0x0)) {
                    var_49(image,key,var_12,exception);
                  }
                  var_50(var_12);
                  var_50(key);
                  local_1104 = MagickTrue;
                }
              }
            }
            if (((var_37 == 0x8769) || (var_37 == 0xa005)) || (var_37 == 0x8825)) {
              var_34 = var_51(var_25,(type_9 *)var_38);
              if (var_34 < var_14) {
                if (0xd < var_46) goto LAB_00124aba;
                sVar28 = 0x10000;
                if (var_37 != 0x8825) {
                  sVar28 = 0;
                }
                var_10 = var_46 + 1;
                directory_stack[var_46].directory = (type_9 *)var_24;
                directory_stack[var_46].entry = var_28 + 1;
                directory_stack[var_46].offset = var_35;
                var_53 = 0;
                var_55 = (type_9 *)((int)var_23 + var_34);
                goto LAB_00124c76;
              }
              break;
            }
          }
          else {
            var_34 = *(type_6 *)(var_29 + 4);
            var_34 = var_34 >> 0x18 | (var_34 & 0xff0000) >> 8 | (var_34 & 0xff00) << 8 |
                     var_34 << 0x18;
            if (var_25 == var_26) {
              var_34 = *(type_6 *)(var_29 + 4);
            }
            if ((((-1 < (int)var_34) && (var_34 < var_14)) && (var_39 + var_34 <= var_14)) &&
               (!var_52(var_39,var_34))) {
              var_38 = (type_4 *)(var_34 + (int)var_23);
              goto LAB_001241d4;
            }
          }
          var_28 = var_28 + 1;
          if (var_19 == var_28) break;
          var_29 = (type_4 *)((int)var_29 + (int)((int)var_24 + var_53 + 0xe));
          bVar29 = var_54 <= var_30;
          var_54 = var_54 + 6;
        } while (bVar29);
      }
    }
    if (var_46 != 0) goto LAB_00124aba;
  }
  goto LAB_00124b97;
  while (var_53 = var_53 + 1, var_53 < var_10) {
LAB_00124c76:
    if (directory_stack[var_53].directory == var_55) {
      var_55 = directory_stack[var_53].directory;
      if (var_53 < var_10) goto LAB_00124aba;
      break;
    }
  }
  directory_stack[var_10].directory = var_55;
  directory_stack[var_10].offset = sVar28;
  directory_stack[var_10].entry = 0;
  var_10 = var_46 + 2;
  if (((var_24 + var_19 * 6 + 3 <= (type_4 *)((int)var_23 + var_14)) &&
      (var_19 = var_51(var_25,(type_9 *)(var_24 + var_19 * 6 + 1)),
      var_19 != 0)) && ((var_10 < 0xe && (var_19 < var_14)))) {
    directory_stack[var_10].entry = 0;
    directory_stack[var_10].directory = (type_9 *)(var_19 + (int)var_23);
    directory_stack[var_10].offset = sVar28;
    var_10 = var_46 + 3;
  }
LAB_00124aba:
  var_46 = var_10;
  var_46 = var_46 + -1;
  var_24 = (type_4 *)directory_stack[var_46].directory;
  var_28 = directory_stack[var_46].entry;
  var_35 = directory_stack[var_46].offset;
  goto LAB_00124153;
LAB_00124b97:
  var_56(splay_tree);
  goto LAB_00123f5a;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 __regparm3 MASKED(int param_1,byte *param_2,undefined4 param_3)

{
  ushort *puVar1;
  byte bVar2;
  char cVar3;
  uint uVar4;
  ushort uVar5;
  ushort uVar6;
  int iVar7;
  ushort **ppuVar8;
  size_t sVar9;
  int iVar10;
  ushort *puVar11;
  uint uVar12;
  undefined4 uVar13;
  ushort *puVar14;
  int iVar15;
  ushort *puVar16;
  uint uVar17;
  Elf32_Ehdr *extraout_ECX;
  char *pcVar18;
  uint uVar19;
  int iVar20;
  undefined4 *puVar21;
  ushort *puVar22;
  Elf32_Ehdr *pEVar23;
  uint uVar24;
  int in_GS_OFFSET;
  bool bVar25;
  Elf32_Ehdr *local_1160;
  int local_1158;
  uint local_1150;
  int local_114c;
  Elf32_Ehdr *local_1148;
  ushort *local_1144;
  ushort *local_1140;
  uint local_1134;
  int local_112c;
  ushort *local_1110;
  undefined4 local_1104;
  undefined4 local_10e4;
  uint local_10e0 [48];
  undefined1 local_1020;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x123e2d;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar7 = GetImageProfile(param_1,&DAT_002c0184);
  if (((iVar7 != 0) && (param_2 != (byte *)0x0)) && (bVar2 = *param_2, bVar2 != 0)) {
    ppuVar8 = __ctype_b_loc();
    while ((*(byte *)((int)*ppuVar8 + (uint)bVar2 * 2 + 1) & 0x20) != 0) {
      param_2 = param_2 + 1;
      bVar2 = *param_2;
    }
    sVar9 = strlen((char *)param_2);
    if (5 < sVar9) {
      bVar2 = param_2[5];
      if (bVar2 == 0x23) {
LAB_00123edc:
        param_2 = param_2 + 6;
        sVar9 = strlen((char *)param_2);
        if (sVar9 == 4) {
          local_1160 = (Elf32_Ehdr *)(uint)(bVar2 == 0x40);
          do {
            iVar10 = (int)(char)*param_2;
            uVar19 = (int)local_1160 << 4;
            if (iVar10 - 0x30U < 10) {
              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x30U);
            }
            else if (iVar10 - 0x41U < 6) {
              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x37U);
            }
            else {
              if (5 < iVar10 - 0x61U) goto LAB_00123f58;
              local_1160 = (Elf32_Ehdr *)(uVar19 | iVar10 - 0x57U);
            }
            param_2 = param_2 + 1;
          } while (*param_2 != 0);
LAB_00123f24:
          if (local_1160 != (Elf32_Ehdr *)0xffffffff) {
            local_1158 = 0;
            goto LAB_00123f38;
          }
        }
      }
      else {
        if ((char)bVar2 < '$') {
          local_1158 = 2;
          local_1160 = (Elf32_Ehdr *)0x0;
          if (bVar2 != 0x21) {
LAB_00123f95:
            local_1160 = (Elf32_Ehdr *)0x1;
            pcVar18 = "exif:InteroperabilityIndex";
            do {
              iVar10 = LocaleCompare(pcVar18,param_2);
              if (iVar10 == 0) goto LAB_00123f24;
              local_1160 = *(Elf32_Ehdr **)(pcVar18 + 0x24);
              pcVar18 = pcVar18 + 0x28;
            } while (local_1160 != (Elf32_Ehdr *)0x0);
            goto LAB_00123f58;
          }
        }
        else {
          if (bVar2 != 0x2a) {
            if (bVar2 != 0x40) goto LAB_00123f95;
            goto LAB_00123edc;
          }
          local_1158 = 1;
          local_1160 = (Elf32_Ehdr *)0x0;
        }
LAB_00123f38:
        uVar19 = GetStringInfoLength(iVar7);
        if (5 < uVar19) {
          puVar11 = (ushort *)GetStringInfoDatum(iVar7);
          do {
            cVar3 = (char)*puVar11;
            puVar16 = puVar11;
            uVar4 = uVar19;
            while (uVar19 = uVar4 - 1, cVar3 != 'E') {
              if (uVar19 == 0) goto LAB_00123f58;
              puVar16 = (ushort *)((int)puVar16 + 1);
              uVar4 = uVar19;
              cVar3 = *(char *)puVar16;
            }
            if (uVar19 == 0) break;
            uVar19 = uVar4 - 2;
            if (*(char *)((int)puVar16 + 1) == 'x') {
              if (uVar19 == 0) break;
              uVar19 = uVar4 - 3;
              if ((char)puVar16[1] == 'i') {
                if (uVar19 == 0) break;
                uVar19 = uVar4 - 4;
                if (*(char *)((int)puVar16 + 3) == 'f') {
                  if (uVar19 == 0) break;
                  uVar19 = uVar4 - 5;
                  if ((char)puVar16[2] == '\0') {
                    if (uVar19 == 0) break;
                    puVar11 = puVar16 + 3;
                    uVar19 = uVar4 - 6;
                    if (*(char *)((int)puVar16 + 5) == '\0') {
                      if (uVar19 < 0x10) break;
                      if (puVar16[3] == 0x4949) {
                        if (puVar16[4] != 0x2a) break;
                        uVar12 = *(uint *)(puVar16 + 5);
                        local_114c = 1;
                      }
                      else {
                        if ((puVar16[3] != 0x4d4d) || (puVar16[4] != 0x2a00)) break;
                        uVar12 = *(uint *)(puVar16 + 5);
                        local_114c = 2;
                        uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8
                                 | uVar12 << 0x18;
                      }
                      if ((-1 < (int)uVar12) && (uVar12 < uVar19)) {
                        local_1110 = (ushort *)(uVar12 + (int)puVar11);
                        uVar13 = NewSplayTree(0,0,0,local_1110);
                        local_1134 = 0;
                        local_112c = 0;
                        local_1150 = 0;
                        local_1104 = 0;
                        goto LAB_00124153;
                      }
                      break;
                    }
                  }
                  else {
                    puVar11 = (ushort *)((int)puVar16 + 5);
                  }
                }
                else {
                  puVar11 = puVar16 + 2;
                }
              }
              else {
                puVar11 = (ushort *)((int)puVar16 + 3);
              }
            }
            else {
              puVar11 = puVar16 + 1;
            }
          } while (uVar19 != 0);
        }
      }
    }
  }
LAB_00123f58:
  local_1104 = 0;
LAB_00123f5a:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_1104;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0029eab0();
LAB_00124153:
  if ((puVar11 <= local_1110) && (local_1110 <= (ushort *)((int)puVar16 + (uVar4 - 2)))) {
    uVar6 = *local_1110;
    if (local_114c != 1) {
      uVar6 = uVar6 << 8 | uVar6 >> 8;
    }
    uVar12 = (uint)uVar6;
    iVar7 = local_112c;
    if (local_1150 < uVar12) {
      puVar22 = local_1110 + local_1150 * 6 + 1;
      puVar1 = (ushort *)((int)puVar16 + (uVar4 - 0xc));
      if (puVar22 <= puVar1) {
        iVar10 = local_1150 * 0xc - (int)puVar22;
        local_1144 = local_1110 + local_1150 * 6 + 7;
        do {
          puVar14 = (ushort *)GetValueFromSplayTree(uVar13,puVar22);
          if (puVar14 == puVar22) break;
          AddValueToSplayTree(uVar13,puVar22,puVar22);
          if (local_114c == 1) {
            uVar6 = puVar22[1];
            uVar5 = *puVar22;
            if (0xb < (ushort)(uVar6 - 1)) break;
            pEVar23 = *(Elf32_Ehdr **)(puVar22 + 2);
          }
          else {
            uVar5 = *puVar22 << 8 | *puVar22 >> 8;
            uVar6 = puVar22[1] << 8 | puVar22[1] >> 8;
            if (0xb < (ushort)(uVar6 - 1)) break;
            uVar17 = *(uint *)(puVar22 + 2);
            pEVar23 = (Elf32_Ehdr *)
                      (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |
                      uVar17 << 0x18);
          }
          local_1148 = (Elf32_Ehdr *)(uVar5 + local_1134);
          if ((int)pEVar23 < 0) break;
          uVar17 = *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4) * (int)pEVar23;
          if ((int)uVar17 < (int)pEVar23) break;
          if ((int)uVar17 < 5) {
            local_1140 = puVar22 + 4;
LAB_001241d4:
            if ((local_1158 != 0) || (local_1160 == local_1148)) {
              if ((local_1140 < puVar11) ||
                 ((ushort *)((uVar19 - *(int *)(&DAT_002c0c20 + (uint)uVar6 * 4)) + (int)puVar11) <
                  local_1140)) break;
              local_1020 = 0;
              if (uVar6 < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x001243db. Too many branches */
                    /* WARNING: Treating indirect jump as call */
                uVar13 = (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002c05b8 + (uint)uVar6 * 4)))
                                   ();
                return uVar13;
              }
              puVar14 = (ushort *)((uVar19 - uVar17) + (int)puVar11);
              if (local_1140 <= puVar14) {
                iVar15 = AcquireQuantumMemory(uVar17 + 1,1,puVar14,puVar14);
                iVar20 = 0;
                if (iVar15 != 0) {
                  for (; iVar20 < (int)uVar17; iVar20 = iVar20 + 1) {
                    *(undefined1 *)(iVar15 + iVar20) = 0x2e;
                    bVar2 = *(byte *)((int)local_1140 + iVar20);
                    pEVar23 = (Elf32_Ehdr *)*ppuVar8;
                    if (((pEVar23->e_ident_magic_str[(uint)bVar2 * 2] & 0x40U) != 0) || (bVar2 == 0)
                       ) {
                      *(byte *)(iVar15 + iVar20) = bVar2;
                    }
                  }
                  *(undefined1 *)(iVar15 + uVar17) = 0;
                  local_10e4 = AcquireString(param_2);
                  if (local_1158 == 1) {
                    if (local_1148 == (Elf32_Ehdr *)0x1) {
                      iVar20 = 0;
LAB_00124bb8:
                      pcVar18 = "exif:InteroperabilityIndex" + iVar20 * 0x28;
                    }
                    else {
                      iVar20 = 0;
                      pEVar23 = (Elf32_Ehdr *)0x2;
                      puVar21 = &DAT_002c0cb0;
                      while (iVar20 = iVar20 + 1, pEVar23 != (Elf32_Ehdr *)0x0) {
                        if (pEVar23 == local_1148) goto LAB_00124bb8;
                        pEVar23 = (Elf32_Ehdr *)*puVar21;
                        puVar21 = puVar21 + 10;
                      }
                      pcVar18 = "unknown";
                    }
                    FormatLocaleString(local_10e4,0x1000,&DAT_002b6e4e,pcVar18);
                    pEVar23 = local_1148;
LAB_00124b46:
                    if (local_112c == 2) {
                      SubstituteString(&local_10e4,"exif:","exif:thumbnail:",pEVar23);
                    }
                  }
                  else {
                    if (local_1158 != 2) goto LAB_00124b46;
                    if (local_1148 < &Elf32_Ehdr_00010000) {
                      pcVar18 = "#%04lx";
                      pEVar23 = local_1148;
                    }
                    else if ((Elf32_Ehdr *)((int)&__DT_REL[0x26c].r_offset + 3) < local_1148) {
                      pcVar18 = "unknown";
                      pEVar23 = extraout_ECX;
                    }
                    else {
                      pcVar18 = "@%04lx";
                      pEVar23 = (Elf32_Ehdr *)((uint)local_1148 & 0xffff);
                    }
                    FormatLocaleString(local_10e4,0x1000,pcVar18,pEVar23);
                  }
                  if ((*(int *)(param_1 + 0x310) == 0) ||
                     (iVar20 = GetValueFromSplayTree(*(int *)(param_1 + 0x310),local_10e4),
                     iVar20 == 0)) {
                    SetImageProperty(param_1,local_10e4,iVar15,param_3);
                  }
                  DestroyString(iVar15);
                  DestroyString(local_10e4);
                  local_1104 = 1;
                }
              }
            }
            if (((local_1148 == (Elf32_Ehdr *)0x8769) || (local_1148 == (Elf32_Ehdr *)0xa005)) ||
               (local_1148 == (Elf32_Ehdr *)0x8825)) {
              uVar17 = FUN_00121780();
              if (uVar17 < uVar19) {
                if (0xd < local_112c) goto LAB_00124aba;
                uVar24 = 0x10000;
                if (local_1148 != (Elf32_Ehdr *)0x8825) {
                  uVar24 = 0;
                }
                iVar7 = local_112c + 1;
                local_10e0[local_112c * 3] = (uint)local_1110;
                local_10e0[local_112c * 3 + 1] = local_1150 + 1;
                local_10e0[local_112c * 3 + 2] = local_1134;
                iVar10 = 0;
                pcVar18 = (char *)((int)puVar11 + uVar17);
                goto LAB_00124c76;
              }
              break;
            }
          }
          else {
            uVar24 = *(uint *)(puVar22 + 4);
            uVar24 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 |
                     uVar24 << 0x18;
            if (local_114c == 1) {
              uVar24 = *(uint *)(puVar22 + 4);
            }
            if ((((-1 < (int)uVar24) && (uVar24 < uVar19)) && (uVar17 + uVar24 <= uVar19)) &&
               (!CARRY4(uVar17,uVar24))) {
              local_1140 = (ushort *)(uVar24 + (int)puVar11);
              goto LAB_001241d4;
            }
          }
          local_1150 = local_1150 + 1;
          if (uVar12 == local_1150) break;
          puVar22 = (ushort *)((int)puVar22 + (int)((int)local_1110 + iVar10 + 0xe));
          bVar25 = local_1144 <= puVar1;
          local_1144 = local_1144 + 6;
        } while (bVar25);
      }
    }
    if (local_112c != 0) goto LAB_00124aba;
  }
  goto LAB_00124b97;
  while (iVar10 = iVar10 + 1, iVar10 < iVar7) {
LAB_00124c76:
    if ((char *)local_10e0[iVar10 * 3] == pcVar18) {
      pcVar18 = (char *)local_10e0[iVar10 * 3];
      if (iVar10 < iVar7) goto LAB_00124aba;
      break;
    }
  }
  local_10e0[iVar7 * 3] = (uint)pcVar18;
  local_10e0[iVar7 * 3 + 2] = uVar24;
  local_10e0[iVar7 * 3 + 1] = 0;
  iVar7 = local_112c + 2;
  if (((local_1110 + uVar12 * 6 + 3 <= (ushort *)((int)puVar11 + uVar19)) &&
      (uVar12 = FUN_00121780(), uVar12 != 0)) && ((iVar7 < 0xe && (uVar12 < uVar19)))) {
    local_10e0[iVar7 * 3 + 1] = 0;
    local_10e0[iVar7 * 3] = (uint)(uVar12 + (int)puVar11);
    local_10e0[iVar7 * 3 + 2] = uVar24;
    iVar7 = local_112c + 3;
  }
LAB_00124aba:
  local_112c = iVar7;
  local_112c = local_112c + -1;
  local_1110 = (ushort *)local_10e0[local_112c * 3];
  local_1150 = local_10e0[local_112c * 3 + 1];
  local_1134 = local_10e0[local_112c * 3 + 2];
  goto LAB_00124153;
LAB_00124b97:
  DestroySplayTree(uVar13);
  goto LAB_00123f5a;
}

