
void png_handle_zTXt(png_structrp png_ptr,png_inforp info_ptr,png_uint_32 length)

{
  png_byte pVar1;
  int iVar2;
  png_uint_32 pVar3;
  uint uVar4;
  int iVar5;
  png_charp *ppcVar6;
  png_const_textp ppVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  png_bytep ppVar10;
  png_structrp ppVar11;
  png_structrp png_ptr_00;
  png_inforp info_ptr_00;
  png_const_textp ppVar12;
  png_const_textp ppVar13;
  png_const_textp ppVar14;
  png_charp *unaff_s0;
  png_bytep unaff_s1;
  undefined4 unaff_s5;
  png_const_textp ppVar15;
  undefined *puVar16;
  code *pcVar17;
  code *pcVar18;
  png_byte apStackY_f4 [4];
  undefined1 auStackY_f0 [4];
  int iStackY_ec;
  png_charp *ppcStackY_e8;
  png_const_textp ppStackY_e4;
  png_bytep ppStackY_e0;
  code *pcStackY_dc;
  png_alloc_size_t pStack_b4;
  png_text pStack_b0;
  int iStack_94;
  png_charp *ppcStack_8c;
  png_bytep ppStack_88;
  png_uint_32 pStack_84;
  png_structrp ppStack_80;
  png_inforp ppStack_7c;
  undefined4 uStack_78;
  png_alloc_size_t uncompressed_length;
  png_text text;
  
  iVar2 = *(int *)PTR___stack_chk_guard_000564c0;
  pVar3 = png_ptr->user_chunk_cache_max;
  ppVar11 = png_ptr;
  ppVar13 = (png_const_textp)length;
  if (pVar3 == 0) {
LAB_00031414:
    uVar4 = png_ptr->mode;
    if ((uVar4 & 1) == 0) {
      (*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);
    }
    else {
      ppVar13 = (png_const_textp)&DAT_00000002;
      if ((uVar4 & 4) != 0) {
        png_ptr->mode = uVar4 | 8;
      }
      unaff_s1 = png_read_buffer(png_ptr,length,2);
      if (unaff_s1 != (png_bytep)0x0) {
        ppVar13 = (png_const_textp)length;
        png_crc_read(png_ptr,unaff_s1,length);
        info_ptr_00 = (png_inforp)0x0;
        iVar5 = png_crc_finish(png_ptr,0);
        if (iVar5 == 0) {
          if (length == 0) {
            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);
          }
          else if (*unaff_s1 == '\0') {
            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);
          }
          else {
            ppcVar6 = (png_charp *)0x0;
            for (unaff_s0 = (png_charp *)0x1;
                ((png_charp *)length != unaff_s0 &&
                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));
                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {
              ppcVar6 = unaff_s0;
            }
            if (ppcVar6 < (png_charp *)0x4f) {
              if (length < ppcVar6 + 1) {
                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);
              }
              else {
                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);
                if (unaff_s1[2] == '\0') {
                  uncompressed_length = 0xffffffff;
                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);
                  unaff_s5 = 1;
                  ppVar13 = (png_const_textp)unaff_s1;
                  iVar5 = png_decompress_chunk
                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);
                  if (iVar5 == 1) {
                    ppVar10 = png_ptr->read_buffer;
                    if (ppVar10 == (png_bytep)0x0) {
                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);
                    }
                    else {
                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';
                      text.compression = 0;
                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);
                      text.text_length = uncompressed_length;
                      text.itxt_length = 0;
                      text.lang = (png_charp)0x0;
                      text.lang_key = (png_charp)0x0;
                      ppVar13 = &text;
                      ppVar11 = png_ptr;
                      text.key = (png_charp)ppVar10;
                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);
                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;
                      if (iVar5 == 0) goto LAB_0003169c;
                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);
                    }
                  }
                  else {
                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;
                    ppVar11 = png_ptr;
                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;
                  }
                }
                else {
                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);
                }
              }
            }
            else {
              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);
            }
          }
          ppVar11 = png_ptr;
          (*(code *)PTR_png_chunk_benign_error_000564a0)();
        }
        goto LAB_0003169c;
      }
    }
    png_crc_finish(png_ptr,length);
    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x2f14);
    (*(code *)PTR_png_chunk_benign_error_000564a0)();
  }
  else if (pVar3 == 1) {
    info_ptr_00 = (png_inforp)length;
    png_crc_finish(png_ptr,length);
  }
  else {
    png_ptr->user_chunk_cache_max = pVar3 - 1;
    if (pVar3 - 1 != 1) goto LAB_00031414;
    png_crc_finish(png_ptr,length);
    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);
    (*(code *)PTR_png_chunk_benign_error_000564a0)();
  }
LAB_0003169c:
  if (iVar2 == *(int *)PTR___stack_chk_guard_000564c0) {
    return;
  }
  puVar16 = PTR___stack_chk_fail_00056488;
  (*(code *)PTR___stack_chk_fail_00056488)();
  iStack_94 = **(int **)(puVar16 + 0x24ddc);
  pVar3 = ppVar11->user_chunk_cache_max;
  ppVar14 = ppVar13;
  ppcStack_8c = unaff_s0;
  ppStack_88 = unaff_s1;
  pStack_84 = length;
  ppStack_80 = png_ptr;
  ppStack_7c = info_ptr;
  uStack_78 = unaff_s5;
  if (pVar3 == 0) {
LAB_00031754:
    uVar4 = ppVar11->mode;
    if ((uVar4 & 1) == 0) {
      (**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);
    }
    else {
      ppVar14 = (png_const_textp)0x1;
      if ((uVar4 & 4) != 0) {
        ppVar11->mode = uVar4 | 8;
      }
      length = (png_uint_32)
               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);
      if ((png_bytep)length != (png_bytep)0x0) {
        ppVar14 = ppVar13;
        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);
        ppVar12 = (png_const_textp)0x0;
        png_ptr_00 = ppVar11;
        iVar2 = png_crc_finish(ppVar11,0);
        if (iVar2 != 0) goto LAB_00031ad0;
        if (ppVar13 == (png_const_textp)0x0) {
          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);
LAB_00031abc:
          pcVar17 = *(code **)(puVar16 + 0x24dbc);
        }
        else {
          if (*(png_byte *)length == '\0') {
            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);
            goto LAB_00031abc;
          }
          ppVar12 = (png_const_textp)0x1;
          ppVar7 = (png_const_textp)0x0;
          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&
                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {
            ppVar7 = ppVar15;
            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);
          }
          if ((png_const_textp)0x4e < ppVar7) {
            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);
            goto LAB_00031abc;
          }
          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {
            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);
            goto LAB_00031abc;
          }
          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];
          unaff_s0 = &ppVar7->key;
          if (pVar1 != '\0') {
            if (pVar1 == '\x01') {
              unaff_s0 = &ppVar7->key;
              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;
              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);
            }
            else {
              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);
            }
            goto LAB_00031abc;
          }
LAB_00031900:
          unaff_s0 = &ppVar7->key;
          pStack_b4 = 0;
          ppVar12 = (png_const_textp)unaff_s0;
          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {
            ppcVar6 = &ppVar7->key;
            do {
              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);
              if (ppVar13 == ppVar12) break;
              ppcVar6 = (png_charp *)&ppVar12->compression;
            } while (*(png_bytep)(length + (int)ppVar12) != '\0');
          }
          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);
          ppVar7 = ppVar15;
          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {
            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);
            do {
              ppVar7 = ppVar12;
              if (ppVar13 <= ppVar7) break;
              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);
            } while (*(png_bytep)(length + (int)ppVar7) != '\0');
          }
          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);
          if (pVar1 == '\0') {
            if (ppVar7 <= ppVar13) {
              pStack_b4 = (int)ppVar13 - (int)ppVar7;
              ppVar13 = (png_const_textp)(length + (int)ppVar13);
              *(png_byte *)&ppVar13->compression = '\0';
              pStack_b0.compression = 1;
              goto LAB_000319a0;
            }
            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);
            goto LAB_00031abc;
          }
          if (ppVar13 <= ppVar7) {
            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);
            goto LAB_00031abc;
          }
          pStack_b4 = 0xffffffff;
          ppVar14 = ppVar7;
          iVar2 = png_decompress_chunk
                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);
          if (iVar2 == 1) {
            length = (png_uint_32)ppVar11->read_buffer;
            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';
            pStack_b0.compression = 2;
          }
          else {
            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;
            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;
            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';
            pStack_b0.compression = 2;
          }
LAB_000319a0:
          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);
          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);
          pStack_b0.text = (png_charp)(length + (int)ppVar7);
          pStack_b0.text_length = 0;
          pStack_b0.itxt_length = pStack_b4;
          ppVar14 = &pStack_b0;
          pStack_b0.key = (png_charp)length;
          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);
          ppVar12 = (png_const_textp)0x0;
          if (iVar2 != 0) {
            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);
          }
          png_ptr_00 = ppVar11;
          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;
          pcVar17 = *(code **)(puVar16 + 0x24dbc);
        }
        (*pcVar17)();
        png_ptr_00 = ppVar11;
        goto LAB_00031ad0;
      }
    }
    png_crc_finish(ppVar11,(png_uint_32)ppVar13);
    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14);
    (**(code **)(puVar16 + 0x24dbc))();
    png_ptr_00 = ppVar11;
  }
  else if (pVar3 == 1) {
    ppVar12 = ppVar13;
    png_crc_finish(ppVar11,(png_uint_32)ppVar13);
    png_ptr_00 = ppVar11;
  }
  else {
    ppVar11->user_chunk_cache_max = pVar3 - 1;
    if (pVar3 - 1 != 1) goto LAB_00031754;
    png_crc_finish(ppVar11,(png_uint_32)ppVar13);
    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);
    (**(code **)(puVar16 + 0x24dbc))();
    png_ptr_00 = ppVar11;
  }
LAB_00031ad0:
  if (iStack_94 == **(int **)(puVar16 + 0x24ddc)) {
    return;
  }
  pcVar17 = *(code **)(puVar16 + 0x24da4);
  pcVar18 = png_handle_acTL;
  (*pcVar17)();
  iStackY_ec = **(int **)(pcVar17 + 0x24990);
  uVar4 = png_ptr_00->mode;
  ppcStackY_e8 = unaff_s0;
  ppStackY_e4 = ppVar13;
  ppStackY_e0 = (png_bytep)length;
  pcStackY_dc = pcVar18;
  if ((uVar4 & 1) == 0) {
    (**(code **)(pcVar17 + 0x248e0))();
    ppVar14 = ppVar13;
  }
  else if ((uVar4 & 4) == 0) {
    if ((int)(uVar4 << 0xf) < 0) {
      (**(code **)(pcVar17 + 0x24914))();
      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);
      ppVar11 = png_ptr_00;
    }
    else if (ppVar14 == (png_const_textp)0x8) {
      png_crc_read(png_ptr_00,apStackY_f4,8);
      png_crc_finish(png_ptr_00,0);
      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);
      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);
      ppVar11 = png_ptr_00;
      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);
      ppVar14 = ppVar12;
      if (iVar2 != 0) {
        png_ptr_00->mode = png_ptr_00->mode | 0x10000;
      }
    }
    else {
      (**(code **)(pcVar17 + 0x24914))();
      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);
      ppVar11 = png_ptr_00;
    }
    goto LAB_00031bc4;
  }
  (**(code **)(pcVar17 + 0x24914))();
  png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);
  ppVar11 = png_ptr_00;
LAB_00031bc4:
  if (iStackY_ec == **(int **)(pcVar17 + 0x24990)) {
    return;
  }
  (**(code **)(pcVar17 + 0x24958))();
  if (((uint)ppVar14->text & 0x60000) == 0x20000) {
    ppVar11->apng_flags = ppVar11->apng_flags | 1;
    ppVar14[10].compression = ppVar14[10].compression + 1;
    return;
  }
  return;
}



void FUN_000313ac(int param_1,undefined4 param_2,char *param_3)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  char *pcVar8;
  char *pcVar9;
  char *pcVar10;
  char *pcVar11;
  char *unaff_s0;
  char *unaff_s1;
  undefined4 unaff_s5;
  char *pcVar12;
  char *pcVar13;
  undefined *puVar14;
  code *pcVar15;
  code *pcVar16;
  undefined1 auStack_f4 [4];
  undefined1 auStack_f0 [4];
  int iStack_ec;
  char *pcStack_e8;
  char *pcStack_e4;
  char *pcStack_e0;
  code *pcStack_dc;
  undefined4 uStack_c8;
  undefined *puStack_c0;
  int iStack_b4;
  undefined4 uStack_b0;
  char *pcStack_ac;
  char *pcStack_a8;
  undefined4 uStack_a4;
  int iStack_a0;
  char *pcStack_9c;
  char *pcStack_98;
  int iStack_94;
  char *pcStack_8c;
  char *pcStack_88;
  char *pcStack_84;
  int iStack_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  int local_44;
  char local_40 [4];
  int local_3c;
  char *local_38;
  int local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  
  local_24 = *(int *)PTR___stack_chk_guard_000564c0;
  iVar2 = *(int *)(param_1 + 0x354);
  iVar4 = param_1;
  pcVar10 = param_3;
  if (iVar2 == 0) {
LAB_00031414:
    uVar3 = *(uint *)(param_1 + 0x124);
    if ((uVar3 & 1) == 0) {
      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);
    }
    else {
      pcVar10 = (char *)0x2;
      if ((uVar3 & 4) != 0) {
        *(uint *)(param_1 + 0x124) = uVar3 | 8;
      }
      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);
      if (unaff_s1 != (char *)0x0) {
        pcVar10 = param_3;
        FUN_0002cfe0(param_1,unaff_s1);
        pcVar8 = (char *)0x0;
        iVar2 = FUN_0002d154(param_1,0);
        if (iVar2 == 0) {
          if (param_3 == (char *)0x0) {
            pcVar8 = PTR_LAB_0005601c + 0x3810;
          }
          else if (*unaff_s1 == '\0') {
            pcVar8 = PTR_LAB_0005601c + 0x3810;
          }
          else {
            pcVar8 = (char *)0x0;
            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));
                unaff_s0 = unaff_s0 + 1) {
              pcVar8 = unaff_s0;
            }
            if (pcVar8 < (char *)0x4f) {
              if (param_3 < pcVar8 + 4) {
                pcVar8 = PTR_LAB_0005601c + 0x47fc;
              }
              else {
                unaff_s1 = unaff_s1 + (int)pcVar8;
                if (unaff_s1[2] == '\0') {
                  local_44 = -1;
                  unaff_s1 = pcVar8 + 3;
                  unaff_s5 = 1;
                  pcVar10 = unaff_s1;
                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);
                  if (iVar4 == 1) {
                    iVar2 = *(int *)(param_1 + 0x374);
                    if (iVar2 == 0) {
                      pcVar8 = PTR_LAB_0005601c + 0x3a04;
                    }
                    else {
                      unaff_s0[local_44 + iVar2 + 2] = '\0';
                      local_40[0] = '\0';
                      local_40[1] = '\0';
                      local_40[2] = '\0';
                      local_40[3] = '\0';
                      local_38 = unaff_s1 + iVar2;
                      local_34 = local_44;
                      local_30 = 0;
                      local_2c = 0;
                      local_28 = 0;
                      pcVar10 = local_40;
                      iVar4 = param_1;
                      local_3c = iVar2;
                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);
                      pcVar8 = PTR_LAB_0005601c;
                      if (iVar2 == 0) goto LAB_0003169c;
                      pcVar8 = PTR_LAB_0005601c + 0x1084;
                    }
                  }
                  else {
                    pcVar8 = *(char **)(param_1 + 0x14c);
                    iVar4 = param_1;
                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;
                  }
                }
                else {
                  pcVar8 = PTR_LAB_0005601c + 0x3a24;
                }
              }
            }
            else {
              pcVar8 = PTR_LAB_0005601c + 0x3810;
            }
          }
          iVar4 = param_1;
          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);
        }
        goto LAB_0003169c;
      }
    }
    FUN_0002d154(param_1,param_3);
    pcVar8 = PTR_LAB_0005601c + 0x2f14;
    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);
  }
  else if (iVar2 == 1) {
    pcVar8 = param_3;
    FUN_0002d154(param_1,param_3);
  }
  else {
    *(int *)(param_1 + 0x354) = iVar2 + -1;
    if (iVar2 + -1 != 1) goto LAB_00031414;
    FUN_0002d154(param_1,param_3);
    pcVar8 = PTR_LAB_0005601c + 0x39c0;
    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);
  }
LAB_0003169c:
  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {
    return;
  }
  puVar14 = PTR___stack_chk_fail_00056488;
  (*(code *)PTR___stack_chk_fail_00056488)();
  puStack_c0 = puVar14 + 0x2c90c;
  iStack_94 = **(int **)(puVar14 + 0x24ddc);
  iVar2 = *(int *)(iVar4 + 0x354);
  pcVar11 = pcVar10;
  pcStack_8c = unaff_s0;
  pcStack_88 = unaff_s1;
  pcStack_84 = param_3;
  iStack_80 = param_1;
  uStack_7c = param_2;
  uStack_78 = unaff_s5;
  if (iVar2 == 0) {
LAB_00031754:
    uVar3 = *(uint *)(iVar4 + 0x124);
    if ((uVar3 & 1) == 0) {
      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);
    }
    else {
      pcVar11 = (char *)0x1;
      if ((uVar3 & 4) != 0) {
        *(uint *)(iVar4 + 0x124) = uVar3 | 8;
      }
      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);
      if (param_3 != (char *)0x0) {
        pcVar11 = pcVar10;
        FUN_0002cfe0(iVar4,param_3);
        pcVar9 = (char *)0x0;
        iVar2 = iVar4;
        iVar5 = FUN_0002d154();
        if (iVar5 != 0) goto LAB_00031ad0;
        if (pcVar10 == (char *)0x0) {
          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);
LAB_00031abc:
          pcVar15 = *(code **)(puStack_c0 + -0x7b50);
        }
        else {
          if (*param_3 == '\0') {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);
            goto LAB_00031abc;
          }
          pcVar9 = (char *)0x1;
          pcVar12 = (char *)0x0;
          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {
            pcVar12 = pcVar13;
            pcVar9 = pcVar13 + 1;
          }
          if ((char *)0x4e < pcVar12) {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);
            goto LAB_00031abc;
          }
          if (pcVar10 < pcVar12 + 6) {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);
            goto LAB_00031abc;
          }
          cVar1 = (param_3 + (int)pcVar12)[2];
          unaff_s0 = pcVar12 + 4;
          if (cVar1 != '\0') {
            if (cVar1 == '\x01') {
              unaff_s0 = pcVar12 + 4;
              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;
              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);
            }
            else {
              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);
            }
            goto LAB_00031abc;
          }
LAB_00031900:
          unaff_s0 = pcVar12 + 4;
          iStack_b4 = 0;
          pcVar9 = unaff_s0;
          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {
            pcVar12 = pcVar12 + 5;
            do {
              pcVar9 = pcVar12;
              if (pcVar10 == pcVar9) break;
              pcVar12 = pcVar9 + 1;
            } while (param_3[(int)pcVar9] != '\0');
          }
          pcVar13 = pcVar9 + 1;
          pcVar12 = pcVar13;
          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {
            pcVar9 = pcVar9 + 2;
            do {
              pcVar12 = pcVar9;
              if (pcVar10 <= pcVar12) break;
              pcVar9 = pcVar12 + 1;
            } while (param_3[(int)pcVar12] != '\0');
          }
          pcVar12 = pcVar12 + 1;
          if (cVar1 == '\0') {
            if (pcVar12 <= pcVar10) {
              iStack_b4 = (int)pcVar10 - (int)pcVar12;
              pcVar10 = param_3 + (int)pcVar10;
              *pcVar10 = '\0';
              uStack_b0 = 1;
              goto LAB_000319a0;
            }
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);
            goto LAB_00031abc;
          }
          if (pcVar10 <= pcVar12) {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);
            goto LAB_00031abc;
          }
          iStack_b4 = -1;
          uStack_c8 = 1;
          pcVar11 = pcVar12;
          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);
          if (iVar2 == 1) {
            param_3 = *(char **)(iVar4 + 0x374);
            (param_3 + (int)pcVar12)[iStack_b4] = '\0';
            uStack_b0 = 2;
          }
          else {
            pcVar9 = *(char **)(iVar4 + 0x14c);
            if (pcVar9 != (char *)0x0) goto LAB_00031abc;
            (param_3 + (int)pcVar12)[iStack_b4] = '\0';
            uStack_b0 = 2;
          }
LAB_000319a0:
          pcStack_9c = param_3 + (int)unaff_s0;
          pcStack_98 = param_3 + (int)pcVar13;
          pcStack_a8 = param_3 + (int)pcVar12;
          uStack_a4 = 0;
          iStack_a0 = iStack_b4;
          pcVar11 = (char *)&uStack_b0;
          pcStack_ac = param_3;
          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);
          pcVar9 = (char *)0x0;
          if (iVar2 != 0) {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);
          }
          iVar2 = iVar4;
          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;
          pcVar15 = *(code **)(puStack_c0 + -0x7b50);
        }
        (*pcVar15)();
        iVar2 = iVar4;
        goto LAB_00031ad0;
      }
    }
    FUN_0002d154(iVar4,pcVar10);
    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);
    (**(code **)(puStack_c0 + -0x7b50))();
    iVar2 = iVar4;
  }
  else if (iVar2 == 1) {
    pcVar9 = pcVar10;
    FUN_0002d154();
    iVar2 = iVar4;
  }
  else {
    *(int *)(iVar4 + 0x354) = iVar2 + -1;
    if (iVar2 + -1 != 1) goto LAB_00031754;
    FUN_0002d154();
    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);
    (**(code **)(puStack_c0 + -0x7b50))();
    iVar2 = iVar4;
  }
LAB_00031ad0:
  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {
    return;
  }
  pcVar15 = *(code **)(puStack_c0 + -0x7b68);
  pcVar16 = FUN_00031b30;
  (*pcVar15)();
  iStack_ec = **(int **)(pcVar15 + 0x24990);
  uVar3 = *(uint *)(iVar2 + 0x124);
  pcStack_e8 = unaff_s0;
  pcStack_e4 = pcVar10;
  pcStack_e0 = param_3;
  pcStack_dc = pcVar16;
  if ((uVar3 & 1) == 0) {
    (**(code **)(pcVar15 + 0x248e0))();
    pcVar11 = pcVar10;
  }
  else if ((uVar3 & 4) == 0) {
    if ((int)(uVar3 << 0xf) < 0) {
      (**(code **)(pcVar15 + 0x24914))();
      FUN_0002d154();
      iVar4 = iVar2;
    }
    else if (pcVar11 == (char *)0x8) {
      FUN_0002cfe0();
      FUN_0002d154(iVar2,0);
      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);
      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);
      iVar4 = iVar2;
      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);
      pcVar11 = pcVar9;
      if (iVar5 != 0) {
        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;
      }
    }
    else {
      (**(code **)(pcVar15 + 0x24914))();
      FUN_0002d154();
      iVar4 = iVar2;
    }
    goto LAB_00031bc4;
  }
  (**(code **)(pcVar15 + 0x24914))();
  FUN_0002d154();
  iVar4 = iVar2;
LAB_00031bc4:
  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {
    return;
  }
  (**(code **)(pcVar15 + 0x24958))();
  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {
    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;
    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;
    return;
  }
  return;
}


lui gp,0x3
addiu gp,gp,-0x33bc
addu gp,gp,t9
addiu sp,sp,-0x68
sw ra,0x64(sp)
sw s5,0x60(sp)
sw s4,0x5c(sp)
sw s3,0x58(sp)
sw s2,0x54(sp)
sw s1,0x50(sp)
sw s0,0x4c(sp)
sw gp,0x18(sp)
or s3,a0,zero
or s4,a1,zero
or s2,a2,zero
lw v0,-0x7b30(gp)
lw v0,0x0(v0)
sw v0,0x44(sp)
lw v0,0x354(a0)
beq v0,zero,0x00031414
_li v1,0x1
beq v0,v1,0x000314b0
_addiu v0,v0,-0x1
li v1,0x1
beq v0,v1,0x000314cc
_sw v0,0x354(a0)
lw v0,0x124(s3)
andi v1,v0,0x1
beq v1,zero,0x00031504
_andi v1,v0,0x4
beq v1,zero,0x00031434
_li a2,0x2
ori v0,v0,0x8
sw v0,0x124(s3)
or a1,s2,zero
or a0,s3,zero
lw t9,-0x7e0c(gp)
addiu t9,t9,-0x3344
bal 0x0002ccbc
_nop
lw gp,0x18(sp)
beq v0,zero,0x0003151c
_or s1,v0,zero
or a2,s2,zero
or a1,v0,zero
or a0,s3,zero
lw t9,-0x7f50(gp)
bal 0x0002cfe0
_nop
lw gp,0x18(sp)
or a1,zero,zero
or a0,s3,zero
lw t9,-0x7eac(gp)
bal 0x0002d154
_nop
lw gp,0x18(sp)
bne v0,zero,0x0003169c
_nop
beq s2,zero,0x00031670
_lw a1,-0x7fd4(gp)
lbu v0,0x0(s1)
beq v0,zero,0x00031678
_or v0,zero,zero
b 0x00031560
_addiu s0,v0,0x1
or a1,a2,zero
lw t9,-0x7eac(gp)
bal 0x0002d154
_nop
lw gp,0x18(sp)
b 0x0003169c
_nop
or a1,a2,zero
lw t9,-0x7eac(gp)
bal 0x0002d154
_nop
lw gp,0x18(sp)
lw a1,-0x7fd4(gp)
addiu a1,a1,0x39c0
or a0,s3,zero
lw t9,-0x7b50(gp)
jalr t9
_nop
lw gp,0x18(sp)
b 0x0003169c
_nop
lw a1,-0x7fd4(gp)
addiu a1,a1,0x376c
or a0,s3,zero
lw t9,-0x7ad0(gp)
jalr t9
_nop
or a1,s2,zero
or a0,s3,zero
lw t9,-0x7eac(gp)
bal 0x0002d154
_nop
lw gp,0x18(sp)
lw a1,-0x7fd4(gp)
addiu a1,a1,0x2f14
or a0,s3,zero
lw t9,-0x7b50(gp)
jalr t9
_nop
lw gp,0x18(sp)
b 0x0003169c
_nop
or v0,s0,zero
addiu s0,v0,0x1
beq s2,s0,0x00031574
_addu v1,s1,s0
lbu v1,0x0(v1)
bne v1,zero,0x00031558
_nop
sltiu v1,v0,0x4f
beq v1,zero,0x00031680
_addiu v1,v0,0x4
sltu v1,s2,v1
bne v1,zero,0x000316d0
_lw a1,-0x7fd4(gp)
addu s1,s1,v0
lbu v1,0x2(s1)
beq v1,zero,0x000315a4
_lw a1,-0x7fd4(gp)
b 0x00031688
_addiu a1,a1,0x3a24
li v1,-0x1
sw v1,0x24(sp)
addiu s1,v0,0x3
li s5,0x1
sw s5,0x10(sp)
addiu a3,sp,0x24
or a2,s1,zero
or a1,s2,zero
or a0,s3,zero
lw t9,-0x7e0c(gp)
addiu t9,t9,-0x283c
bal 0x0002d7c4
_nop
lw gp,0x18(sp)
beq v0,s5,0x000315f8
_nop
lw a1,0x14c(s3)
beq a1,zero,0x0003169c
_or a0,s3,zero
b 0x00031690
_lw t9,-0x7b50(gp)
lw v1,0x374(s3)
beq v1,zero,0x00031664
_addu v0,v1,s0
lw a0,0x24(sp)
addu v0,v0,a0
sb zero,0x2(v0)
sw zero,0x28(sp)
sw v1,0x2c(sp)
addu v0,v1,s1
sw v0,0x30(sp)
lw v0,0x24(sp)
sw v0,0x34(sp)
sw zero,0x38(sp)
sw zero,0x3c(sp)
sw zero,0x40(sp)
li a3,0x1
addiu a2,sp,0x28
or a1,s4,zero
or a0,s3,zero
lw t9,-0x7df8(gp)
bal 0x00035a1c
_nop
lw gp,0x18(sp)
beq v0,zero,0x0003169c
_lw a1,-0x7fd4(gp)
b 0x00031688
_addiu a1,a1,0x1084
lw a1,-0x7fd4(gp)
b 0x00031688
_addiu a1,a1,0x3a04
b 0x00031688
_addiu a1,a1,0x3810
b 0x00031688
_addiu a1,a1,0x3810
lw a1,-0x7fd4(gp)
addiu a1,a1,0x3810
or a0,s3,zero
lw t9,-0x7b50(gp)
jalr t9
_nop
lw gp,0x18(sp)
lw v1,0x44(sp)
lw v0,-0x7b30(gp)
lw v0,0x0(v0)
bne v1,v0,0x000316d8
_lw ra,0x64(sp)
lw s5,0x60(sp)
lw s4,0x5c(sp)
lw s3,0x58(sp)
lw s2,0x54(sp)
lw s1,0x50(sp)
lw s0,0x4c(sp)
jr ra
_addiu sp,sp,0x68
b 0x00031688
_addiu a1,a1,0x47fc
lw t9,-0x7b68(gp)
jalr t9
_nop
(translation_unit "void FUN_000313ac(int param_1,undefined4 param_2,char *param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  char *pcVar11;\n  char *unaff_s0;\n  char *unaff_s1;\n  undefined4 unaff_s5;\n  char *pcVar12;\n  char *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  undefined1 auStack_f4 [4];\n  undefined1 auStack_f0 [4];\n  int iStack_ec;\n  char *pcStack_e8;\n  char *pcStack_e4;\n  char *pcStack_e0;\n  code *pcStack_dc;\n  undefined4 uStack_c8;\n  undefined *puStack_c0;\n  int iStack_b4;\n  undefined4 uStack_b0;\n  char *pcStack_ac;\n  char *pcStack_a8;\n  undefined4 uStack_a4;\n  int iStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  int iStack_94;\n  char *pcStack_8c;\n  char *pcStack_88;\n  char *pcStack_84;\n  int iStack_80;\n  undefined4 uStack_7c;\n  undefined4 uStack_78;\n  int local_44;\n  char local_40 [4];\n  int local_3c;\n  char *local_38;\n  int local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_000564c0;\n  iVar2 = *(int *)(param_1 + 0x354);\n  iVar4 = param_1;\n  pcVar10 = param_3;\n  if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\nLAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar14 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  puStack_c0 = puVar14 + 0x2c90c;\n  iStack_94 = **(int **)(puVar14 + 0x24ddc);\n  iVar2 = *(int *)(iVar4 + 0x354);\n  pcVar11 = pcVar10;\n  pcStack_8c = unaff_s0;\n  pcStack_88 = unaff_s1;\n  pcStack_84 = param_3;\n  iStack_80 = param_1;\n  uStack_7c = param_2;\n  uStack_78 = unaff_s5;\n  if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }\n  pcVar15 = *(code **)(puStack_c0 + -0x7b68);\n  pcVar16 = FUN_00031b30;\n  (*pcVar15)();\n  iStack_ec = **(int **)(pcVar15 + 0x24990);\n  uVar3 = *(uint *)(iVar2 + 0x124);\n  pcStack_e8 = unaff_s0;\n  pcStack_e4 = pcVar10;\n  pcStack_e0 = param_3;\n  pcStack_dc = pcVar16;\n  if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar15 + 0x24914))();\n  FUN_0002d154();\n  iVar4 = iVar2;\nLAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar15 + 0x24958))();\n  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_000313ac(int param_1,undefined4 param_2,char *param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  char *pcVar11;\n  char *unaff_s0;\n  char *unaff_s1;\n  undefined4 unaff_s5;\n  char *pcVar12;\n  char *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  undefined1 auStack_f4 [4];\n  undefined1 auStack_f0 [4];\n  int iStack_ec;\n  char *pcStack_e8;\n  char *pcStack_e4;\n  char *pcStack_e0;\n  code *pcStack_dc;\n  undefined4 uStack_c8;\n  undefined *puStack_c0;\n  int iStack_b4;\n  undefined4 uStack_b0;\n  char *pcStack_ac;\n  char *pcStack_a8;\n  undefined4 uStack_a4;\n  int iStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  int iStack_94;\n  char *pcStack_8c;\n  char *pcStack_88;\n  char *pcStack_84;\n  int iStack_80;\n  undefined4 uStack_7c;\n  undefined4 uStack_78;\n  int local_44;\n  char local_40 [4];\n  int local_3c;\n  char *local_38;\n  int local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_000564c0;\n  iVar2 = *(int *)(param_1 + 0x354);\n  iVar4 = param_1;\n  pcVar10 = param_3;\n  if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\nLAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar14 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  puStack_c0 = puVar14 + 0x2c90c;\n  iStack_94 = **(int **)(puVar14 + 0x24ddc);\n  iVar2 = *(int *)(iVar4 + 0x354);\n  pcVar11 = pcVar10;\n  pcStack_8c = unaff_s0;\n  pcStack_88 = unaff_s1;\n  pcStack_84 = param_3;\n  iStack_80 = param_1;\n  uStack_7c = param_2;\n  uStack_78 = unaff_s5;\n  if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }\n  pcVar15 = *(code **)(puStack_c0 + -0x7b68);\n  pcVar16 = FUN_00031b30;\n  (*pcVar15)();\n  iStack_ec = **(int **)(pcVar15 + 0x24990);\n  uVar3 = *(uint *)(iVar2 + 0x124);\n  pcStack_e8 = unaff_s0;\n  pcStack_e4 = pcVar10;\n  pcStack_e0 = param_3;\n  pcStack_dc = pcVar16;\n  if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar15 + 0x24914))();\n  FUN_0002d154();\n  iVar4 = iVar2;\nLAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar15 + 0x24958))();\n  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000313ac(int param_1,undefined4 param_2,char *param_3)" identifier (parameter_list "(int param_1,undefined4 param_2,char *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  char *pcVar11;\n  char *unaff_s0;\n  char *unaff_s1;\n  undefined4 unaff_s5;\n  char *pcVar12;\n  char *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  undefined1 auStack_f4 [4];\n  undefined1 auStack_f0 [4];\n  int iStack_ec;\n  char *pcStack_e8;\n  char *pcStack_e4;\n  char *pcStack_e0;\n  code *pcStack_dc;\n  undefined4 uStack_c8;\n  undefined *puStack_c0;\n  int iStack_b4;\n  undefined4 uStack_b0;\n  char *pcStack_ac;\n  char *pcStack_a8;\n  undefined4 uStack_a4;\n  int iStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  int iStack_94;\n  char *pcStack_8c;\n  char *pcStack_88;\n  char *pcStack_84;\n  int iStack_80;\n  undefined4 uStack_7c;\n  undefined4 uStack_78;\n  int local_44;\n  char local_40 [4];\n  int local_3c;\n  char *local_38;\n  int local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_000564c0;\n  iVar2 = *(int *)(param_1 + 0x354);\n  iVar4 = param_1;\n  pcVar10 = param_3;\n  if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\nLAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar14 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  puStack_c0 = puVar14 + 0x2c90c;\n  iStack_94 = **(int **)(puVar14 + 0x24ddc);\n  iVar2 = *(int *)(iVar4 + 0x354);\n  pcVar11 = pcVar10;\n  pcStack_8c = unaff_s0;\n  pcStack_88 = unaff_s1;\n  pcStack_84 = param_3;\n  iStack_80 = param_1;\n  uStack_7c = param_2;\n  uStack_78 = unaff_s5;\n  if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }\n  pcVar15 = *(code **)(puStack_c0 + -0x7b68);\n  pcVar16 = FUN_00031b30;\n  (*pcVar15)();\n  iStack_ec = **(int **)(pcVar15 + 0x24990);\n  uVar3 = *(uint *)(iVar2 + 0x124);\n  pcStack_e8 = unaff_s0;\n  pcStack_e4 = pcVar10;\n  pcStack_e0 = param_3;\n  pcStack_dc = pcVar16;\n  if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar15 + 0x24914))();\n  FUN_0002d154();\n  iVar4 = iVar2;\nLAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar15 + 0x24958))();\n  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "char *unaff_s0;" primitive_type (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "char *unaff_s1;" primitive_type (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "undefined1 auStack_f4 [4];" type_identifier (array_declarator "auStack_f4 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_f0 [4];" type_identifier (array_declarator "auStack_f0 [4]" identifier [ number_literal ]) ;) (declaration "int iStack_ec;" primitive_type identifier ;) (declaration "char *pcStack_e8;" primitive_type (pointer_declarator "*pcStack_e8" * identifier) ;) (declaration "char *pcStack_e4;" primitive_type (pointer_declarator "*pcStack_e4" * identifier) ;) (declaration "char *pcStack_e0;" primitive_type (pointer_declarator "*pcStack_e0" * identifier) ;) (declaration "code *pcStack_dc;" type_identifier (pointer_declarator "*pcStack_dc" * identifier) ;) (declaration "undefined4 uStack_c8;" type_identifier identifier ;) (declaration "undefined *puStack_c0;" type_identifier (pointer_declarator "*puStack_c0" * identifier) ;) (declaration "int iStack_b4;" primitive_type identifier ;) (declaration "undefined4 uStack_b0;" type_identifier identifier ;) (declaration "char *pcStack_ac;" primitive_type (pointer_declarator "*pcStack_ac" * identifier) ;) (declaration "char *pcStack_a8;" primitive_type (pointer_declarator "*pcStack_a8" * identifier) ;) (declaration "undefined4 uStack_a4;" type_identifier identifier ;) (declaration "int iStack_a0;" primitive_type identifier ;) (declaration "char *pcStack_9c;" primitive_type (pointer_declarator "*pcStack_9c" * identifier) ;) (declaration "char *pcStack_98;" primitive_type (pointer_declarator "*pcStack_98" * identifier) ;) (declaration "int iStack_94;" primitive_type identifier ;) (declaration "char *pcStack_8c;" primitive_type (pointer_declarator "*pcStack_8c" * identifier) ;) (declaration "char *pcStack_88;" primitive_type (pointer_declarator "*pcStack_88" * identifier) ;) (declaration "char *pcStack_84;" primitive_type (pointer_declarator "*pcStack_84" * identifier) ;) (declaration "int iStack_80;" primitive_type identifier ;) (declaration "undefined4 uStack_7c;" type_identifier identifier ;) (declaration "undefined4 uStack_78;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "char local_40 [4];" primitive_type (array_declarator "local_40 [4]" identifier [ number_literal ]) ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_000564c0;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_000564c0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000564c0" * (cast_expression "(int *)PTR___stack_chk_guard_000564c0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x354);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x354)" identifier = (pointer_expression "*(int *)(param_1 + 0x354)" * (cast_expression "(int *)(param_1 + 0x354)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x354)" ( (binary_expression "param_1 + 0x354" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" identifier = identifier) ;) (expression_statement "pcVar10 = param_3;" (assignment_expression "pcVar10 = param_3" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" { (labeled_statement "LAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0x124);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x124)" identifier = (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" if (parenthesized_expression "((uVar3 & 1) == 0)" ( (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }" { (expression_statement "(*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);" (call_expression "(*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c)" (parenthesized_expression "(*(code *)PTR_png_chunk_error_00056520)" ( (pointer_expression "*(code *)PTR_png_chunk_error_00056520" * (cast_expression "(code *)PTR_png_chunk_error_00056520" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_LAB_0005601c + 0x376c)" ( identifier , (binary_expression "PTR_LAB_0005601c + 0x376c" identifier + number_literal) ))) ;) }) (else_clause "else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" else (compound_statement "{\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" { (expression_statement "pcVar10 = (char *)0x2;" (assignment_expression "pcVar10 = (char *)0x2" identifier = (cast_expression "(char *)0x2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }" { (expression_statement "*(uint *)(param_1 + 0x124) = uVar3 | 8;" (assignment_expression "*(uint *)(param_1 + 0x124) = uVar3 | 8" (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))) = (binary_expression "uVar3 | 8" identifier | number_literal)) ;) })) (expression_statement "unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);" (assignment_expression "unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3)" identifier = (cast_expression "(char *)FUN_0002ccbc(param_1,param_3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002ccbc(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))))) ;) (if_statement "if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }" if (parenthesized_expression "(unaff_s1 != (char *)0x0)" ( (binary_expression "unaff_s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }" { (expression_statement "pcVar10 = param_3;" (assignment_expression "pcVar10 = param_3" identifier = identifier) ;) (expression_statement "FUN_0002cfe0(param_1,unaff_s1);" (call_expression "FUN_0002cfe0(param_1,unaff_s1)" identifier (argument_list "(param_1,unaff_s1)" ( identifier , identifier ))) ;) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar2 = FUN_0002d154(param_1,0);" (assignment_expression "iVar2 = FUN_0002d154(param_1,0)" identifier = (call_expression "FUN_0002d154(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }" { (if_statement "if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" if (parenthesized_expression "(param_3 == (char *)0x0)" ( (binary_expression "param_3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" identifier = (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal)) ;) }) (else_clause "else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" else (if_statement "if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" if (parenthesized_expression "(*unaff_s1 == '\0')" ( (binary_expression "*unaff_s1 == '\0'" (pointer_expression "*unaff_s1" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" identifier = (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal)) ;) }) (else_clause "else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" else (compound_statement "{\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" { (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (for_statement "for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }" for ( (assignment_expression "unaff_s0 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (parenthesized_expression "(param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'))" ( (binary_expression "param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0')" (binary_expression "param_3 != unaff_s0" identifier != identifier) && (parenthesized_expression "(unaff_s1[(int)unaff_s0] != '\0')" ( (binary_expression "unaff_s1[(int)unaff_s0] != '\0'" (subscript_expression "unaff_s1[(int)unaff_s0]" identifier [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ; (assignment_expression "unaff_s0 = unaff_s0 + 1" identifier = (binary_expression "unaff_s0 + 1" identifier + number_literal)) ) (compound_statement "{\n              pcVar8 = unaff_s0;\n            }" { (expression_statement "pcVar8 = unaff_s0;" (assignment_expression "pcVar8 = unaff_s0" identifier = identifier) ;) })) (if_statement "if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" if (parenthesized_expression "(pcVar8 < (char *)0x4f)" ( (binary_expression "pcVar8 < (char *)0x4f" identifier < (cast_expression "(char *)0x4f" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }" { (if_statement "if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" if (parenthesized_expression "(param_3 < pcVar8 + 4)" ( (binary_expression "param_3 < pcVar8 + 4" identifier < (binary_expression "pcVar8 + 4" identifier + number_literal)) )) (compound_statement "{\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x47fc;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x47fc" identifier = (binary_expression "PTR_LAB_0005601c + 0x47fc" identifier + number_literal)) ;) }) (else_clause "else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" else (compound_statement "{\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" { (expression_statement "unaff_s1 = unaff_s1 + (int)pcVar8;" (assignment_expression "unaff_s1 = unaff_s1 + (int)pcVar8" identifier = (binary_expression "unaff_s1 + (int)pcVar8" identifier + (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" if (parenthesized_expression "(unaff_s1[2] == '\0')" ( (binary_expression "unaff_s1[2] == '\0'" (subscript_expression "unaff_s1[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }" { (expression_statement "local_44 = -1;" (assignment_expression "local_44 = -1" identifier = number_literal) ;) (expression_statement "unaff_s1 = pcVar8 + 3;" (assignment_expression "unaff_s1 = pcVar8 + 3" identifier = (binary_expression "pcVar8 + 3" identifier + number_literal)) ;) (expression_statement "unaff_s5 = 1;" (assignment_expression "unaff_s5 = 1" identifier = number_literal) ;) (expression_statement "pcVar10 = unaff_s1;" (assignment_expression "pcVar10 = unaff_s1" identifier = identifier) ;) (expression_statement "iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);" (assignment_expression "iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44)" identifier = (call_expression "FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44)" identifier (argument_list "(param_1,param_3,unaff_s1,&local_44)" ( identifier , identifier , identifier , (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (compound_statement "{\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }" { (expression_statement "iVar2 = *(int *)(param_1 + 0x374);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x374)" identifier = (pointer_expression "*(int *)(param_1 + 0x374)" * (cast_expression "(int *)(param_1 + 0x374)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x374)" ( (binary_expression "param_1 + 0x374" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3a04;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3a04" identifier = (binary_expression "PTR_LAB_0005601c + 0x3a04" identifier + number_literal)) ;) }) (else_clause "else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" else (compound_statement "{\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" { (expression_statement "unaff_s0[local_44 + iVar2 + 2] = '\0';" (assignment_expression "unaff_s0[local_44 + iVar2 + 2] = '\0'" (subscript_expression "unaff_s0[local_44 + iVar2 + 2]" identifier [ (binary_expression "local_44 + iVar2 + 2" (binary_expression "local_44 + iVar2" identifier + identifier) + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_40[0] = '\0';" (assignment_expression "local_40[0] = '\0'" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_40[1] = '\0';" (assignment_expression "local_40[1] = '\0'" (subscript_expression "local_40[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_40[2] = '\0';" (assignment_expression "local_40[2] = '\0'" (subscript_expression "local_40[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_40[3] = '\0';" (assignment_expression "local_40[3] = '\0'" (subscript_expression "local_40[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_38 = unaff_s1 + iVar2;" (assignment_expression "local_38 = unaff_s1 + iVar2" identifier = (binary_expression "unaff_s1 + iVar2" identifier + identifier)) ;) (expression_statement "local_34 = local_44;" (assignment_expression "local_34 = local_44" identifier = identifier) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "pcVar10 = local_40;" (assignment_expression "pcVar10 = local_40" identifier = identifier) ;) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" identifier = identifier) ;) (expression_statement "local_3c = iVar2;" (assignment_expression "local_3c = iVar2" identifier = identifier) ;) (expression_statement "iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);" (assignment_expression "iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1)" identifier = (call_expression "FUN_00035a1c(param_1,param_2,pcVar10,1)" identifier (argument_list "(param_1,param_2,pcVar10,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "pcVar8 = PTR_LAB_0005601c;" (assignment_expression "pcVar8 = PTR_LAB_0005601c" identifier = identifier) ;) (if_statement "if (iVar2 == 0) goto LAB_0003169c;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;)) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x1084;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x1084" identifier = (binary_expression "PTR_LAB_0005601c + 0x1084" identifier + number_literal)) ;) }))) }) (else_clause "else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" else (compound_statement "{\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" { (expression_statement "pcVar8 = *(char **)(param_1 + 0x14c);" (assignment_expression "pcVar8 = *(char **)(param_1 + 0x14c)" identifier = (pointer_expression "*(char **)(param_1 + 0x14c)" * (cast_expression "(char **)(param_1 + 0x14c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14c)" ( (binary_expression "param_1 + 0x14c" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" identifier = identifier) ;) (if_statement "if (pcVar8 == (char *)0x0) goto LAB_0003169c;" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;)) }))) }) (else_clause "else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" else (compound_statement "{\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3a24;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3a24" identifier = (binary_expression "PTR_LAB_0005601c + 0x3a24" identifier + number_literal)) ;) }))) }))) }) (else_clause "else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" else (compound_statement "{\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" identifier = (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal)) ;) }))) }))))) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,pcVar8)" ( identifier , identifier ))) ;) })) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;) })) }))) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x2f14;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x2f14" identifier = (binary_expression "PTR_LAB_0005601c + 0x2f14" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,pcVar8)" ( identifier , identifier ))) ;) }) (else_clause "else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" else (if_statement "if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }" { (expression_statement "pcVar8 = param_3;" (assignment_expression "pcVar8 = param_3" identifier = identifier) ;) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" else (compound_statement "{\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" { (expression_statement "*(int *)(param_1 + 0x354) = iVar2 + -1;" (assignment_expression "*(int *)(param_1 + 0x354) = iVar2 + -1" (pointer_expression "*(int *)(param_1 + 0x354)" * (cast_expression "(int *)(param_1 + 0x354)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x354)" ( (binary_expression "param_1 + 0x354" identifier + number_literal) )))) = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (if_statement "if (iVar2 + -1 != 1) goto LAB_00031414;" if (parenthesized_expression "(iVar2 + -1 != 1)" ( (binary_expression "iVar2 + -1 != 1" (binary_expression "iVar2 + -1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00031414;" goto statement_identifier ;)) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x39c0;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x39c0" identifier = (binary_expression "PTR_LAB_0005601c + 0x39c0" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,pcVar8)" ( identifier , identifier ))) ;) }))))) (labeled_statement "LAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }" statement_identifier : (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }" if (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_000564c0)" ( (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_000564c0" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000564c0" * (cast_expression "(int *)PTR___stack_chk_guard_000564c0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "puVar14 = PTR___stack_chk_fail_00056488;" (assignment_expression "puVar14 = PTR___stack_chk_fail_00056488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00056488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00056488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00056488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00056488" * (cast_expression "(code *)PTR___stack_chk_fail_00056488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_c0 = puVar14 + 0x2c90c;" (assignment_expression "puStack_c0 = puVar14 + 0x2c90c" identifier = (binary_expression "puVar14 + 0x2c90c" identifier + number_literal)) ;) (expression_statement "iStack_94 = **(int **)(puVar14 + 0x24ddc);" (assignment_expression "iStack_94 = **(int **)(puVar14 + 0x24ddc)" identifier = (pointer_expression "**(int **)(puVar14 + 0x24ddc)" * (pointer_expression "*(int **)(puVar14 + 0x24ddc)" * (cast_expression "(int **)(puVar14 + 0x24ddc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x24ddc)" ( (binary_expression "puVar14 + 0x24ddc" identifier + number_literal) )))))) ;) (expression_statement "iVar2 = *(int *)(iVar4 + 0x354);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x354)" identifier = (pointer_expression "*(int *)(iVar4 + 0x354)" * (cast_expression "(int *)(iVar4 + 0x354)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x354)" ( (binary_expression "iVar4 + 0x354" identifier + number_literal) ))))) ;) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) (expression_statement "pcStack_8c = unaff_s0;" (assignment_expression "pcStack_8c = unaff_s0" identifier = identifier) ;) (expression_statement "pcStack_88 = unaff_s1;" (assignment_expression "pcStack_88 = unaff_s1" identifier = identifier) ;) (expression_statement "pcStack_84 = param_3;" (assignment_expression "pcStack_84 = param_3" identifier = identifier) ;) (expression_statement "iStack_80 = param_1;" (assignment_expression "iStack_80 = param_1" identifier = identifier) ;) (expression_statement "uStack_7c = param_2;" (assignment_expression "uStack_7c = param_2" identifier = identifier) ;) (expression_statement "uStack_78 = unaff_s5;" (assignment_expression "uStack_78 = unaff_s5" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" { (labeled_statement "LAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);" statement_identifier : (expression_statement "uVar3 = *(uint *)(iVar4 + 0x124);" (assignment_expression "uVar3 = *(uint *)(iVar4 + 0x124)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x124)" * (cast_expression "(uint *)(iVar4 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x124)" ( (binary_expression "iVar4 + 0x124" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" if (parenthesized_expression "((uVar3 & 1) == 0)" ( (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }" { (expression_statement "(**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);" (call_expression "(**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c)" (parenthesized_expression "(**(code **)(puVar14 + 0x24e3c))" ( (pointer_expression "**(code **)(puVar14 + 0x24e3c)" * (pointer_expression "*(code **)(puVar14 + 0x24e3c)" * (cast_expression "(code **)(puVar14 + 0x24e3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x24e3c)" ( (binary_expression "puVar14 + 0x24e3c" identifier + number_literal) ))))) )) (argument_list "(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c)" ( identifier , (binary_expression "*(int *)(puVar14 + 0x24938) + 0x376c" (pointer_expression "*(int *)(puVar14 + 0x24938)" * (cast_expression "(int *)(puVar14 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x24938)" ( (binary_expression "puVar14 + 0x24938" identifier + number_literal) )))) + number_literal) ))) ;) }) (else_clause "else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" else (compound_statement "{\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" { (expression_statement "pcVar11 = (char *)0x1;" (assignment_expression "pcVar11 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }" { (expression_statement "*(uint *)(iVar4 + 0x124) = uVar3 | 8;" (assignment_expression "*(uint *)(iVar4 + 0x124) = uVar3 | 8" (pointer_expression "*(uint *)(iVar4 + 0x124)" * (cast_expression "(uint *)(iVar4 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x124)" ( (binary_expression "iVar4 + 0x124" identifier + number_literal) )))) = (binary_expression "uVar3 | 8" identifier | number_literal)) ;) })) (expression_statement "param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);" (assignment_expression "param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1)" identifier = (cast_expression "(char *)FUN_0002ccbc(iVar4,pcVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002ccbc(iVar4,pcVar10 + 1)" identifier (argument_list "(iVar4,pcVar10 + 1)" ( identifier , (binary_expression "pcVar10 + 1" identifier + number_literal) ))))) ;) (if_statement "if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }" if (parenthesized_expression "(param_3 != (char *)0x0)" ( (binary_expression "param_3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }" { (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) (expression_statement "FUN_0002cfe0(iVar4,param_3);" (call_expression "FUN_0002cfe0(iVar4,param_3)" identifier (argument_list "(iVar4,param_3)" ( identifier , identifier ))) ;) (expression_statement "pcVar9 = (char *)0x0;" (assignment_expression "pcVar9 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (expression_statement "iVar5 = FUN_0002d154();" (assignment_expression "iVar5 = FUN_0002d154()" identifier = (call_expression "FUN_0002d154()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) goto LAB_00031ad0;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;)) (if_statement "if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (labeled_statement "LAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);" statement_identifier : (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b50);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b50)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" * (cast_expression "(code **)(puStack_c0 + -0x7b50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b50)" ( (binary_expression "puStack_c0 + -0x7b50" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" else (compound_statement "{\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" { (if_statement "if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(*param_3 == '\0')" ( (binary_expression "*param_3 == '\0'" (pointer_expression "*param_3" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "pcVar9 = (char *)0x1;" (assignment_expression "pcVar9 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar12 = (char *)0x0;" (assignment_expression "pcVar12 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }" while (parenthesized_expression "((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')))" ( (parenthesized_expression "(pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))" ( (comma_expression "pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')" (assignment_expression "pcVar13 = pcVar9" identifier = identifier) , (binary_expression "pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')" (binary_expression "pcVar10 != pcVar13" identifier != identifier) && (parenthesized_expression "(param_3[(int)pcVar13] != '\0')" ( (binary_expression "param_3[(int)pcVar13] != '\0'" (subscript_expression "param_3[(int)pcVar13]" identifier [ (cast_expression "(int)pcVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) )))) )) )) (compound_statement "{\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }" { (expression_statement "pcVar12 = pcVar13;" (assignment_expression "pcVar12 = pcVar13" identifier = identifier) ;) (expression_statement "pcVar9 = pcVar13 + 1;" (assignment_expression "pcVar9 = pcVar13 + 1" identifier = (binary_expression "pcVar13 + 1" identifier + number_literal)) ;) })) (if_statement "if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "((char *)0x4e < pcVar12)" ( (binary_expression "(char *)0x4e < pcVar12" (cast_expression "(char *)0x4e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (if_statement "if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(pcVar10 < pcVar12 + 6)" ( (binary_expression "pcVar10 < pcVar12 + 6" identifier < (binary_expression "pcVar12 + 6" identifier + number_literal)) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "cVar1 = (param_3 + (int)pcVar12)[2];" (assignment_expression "cVar1 = (param_3 + (int)pcVar12)[2]" identifier = (subscript_expression "(param_3 + (int)pcVar12)[2]" (parenthesized_expression "(param_3 + (int)pcVar12)" ( (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ number_literal ])) ;) (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" identifier = (binary_expression "pcVar12 + 4" identifier + number_literal)) ;) (if_statement "if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }" { (if_statement "if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" if (parenthesized_expression "(cVar1 == '\x01')" ( (binary_expression "cVar1 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" { (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" identifier = (binary_expression "pcVar12 + 4" identifier + number_literal)) ;) (if_statement "if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;" if (parenthesized_expression "((param_3 + (int)pcVar12)[3] == '\0')" ( (binary_expression "(param_3 + (int)pcVar12)[3] == '\0'" (subscript_expression "(param_3 + (int)pcVar12)[3]" (parenthesized_expression "(param_3 + (int)pcVar12)" ( (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00031900;" goto statement_identifier ;)) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3a40" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) }) (else_clause "else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" else (compound_statement "{\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3a40" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) }))) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (labeled_statement "LAB_00031900:\n          unaff_s0 = pcVar12 + 4;" statement_identifier : (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" identifier = (binary_expression "pcVar12 + 4" identifier + number_literal)) ;)) (expression_statement "iStack_b4 = 0;" (assignment_expression "iStack_b4 = 0" identifier = number_literal) ;) (expression_statement "pcVar9 = unaff_s0;" (assignment_expression "pcVar9 = unaff_s0" identifier = identifier) ;) (if_statement "if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }" if (parenthesized_expression "((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0'))" ( (binary_expression "(unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')" (parenthesized_expression "(unaff_s0 < pcVar10)" ( (binary_expression "unaff_s0 < pcVar10" identifier < identifier) )) && (parenthesized_expression "(param_3[(int)unaff_s0] != '\0')" ( (binary_expression "param_3[(int)unaff_s0] != '\0'" (subscript_expression "param_3[(int)unaff_s0]" identifier [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }" { (expression_statement "pcVar12 = pcVar12 + 5;" (assignment_expression "pcVar12 = pcVar12 + 5" identifier = (binary_expression "pcVar12 + 5" identifier + number_literal)) ;) (do_statement "do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');" do (compound_statement "{\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            }" { (expression_statement "pcVar9 = pcVar12;" (assignment_expression "pcVar9 = pcVar12" identifier = identifier) ;) (if_statement "if (pcVar10 == pcVar9) break;" if (parenthesized_expression "(pcVar10 == pcVar9)" ( (binary_expression "pcVar10 == pcVar9" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pcVar12 = pcVar9 + 1;" (assignment_expression "pcVar12 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3[(int)pcVar9] != '\0')" ( (binary_expression "param_3[(int)pcVar9] != '\0'" (subscript_expression "param_3[(int)pcVar9]" identifier [ (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "pcVar13 = pcVar9 + 1;" (assignment_expression "pcVar13 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (expression_statement "pcVar12 = pcVar13;" (assignment_expression "pcVar12 = pcVar13" identifier = identifier) ;) (if_statement "if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }" if (parenthesized_expression "((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0'))" ( (binary_expression "(pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')" (parenthesized_expression "(pcVar13 < pcVar10)" ( (binary_expression "pcVar13 < pcVar10" identifier < identifier) )) && (parenthesized_expression "(param_3[(int)pcVar13] != '\0')" ( (binary_expression "param_3[(int)pcVar13] != '\0'" (subscript_expression "param_3[(int)pcVar13]" identifier [ (cast_expression "(int)pcVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }" { (expression_statement "pcVar9 = pcVar9 + 2;" (assignment_expression "pcVar9 = pcVar9 + 2" identifier = (binary_expression "pcVar9 + 2" identifier + number_literal)) ;) (do_statement "do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');" do (compound_statement "{\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            }" { (expression_statement "pcVar12 = pcVar9;" (assignment_expression "pcVar12 = pcVar9" identifier = identifier) ;) (if_statement "if (pcVar10 <= pcVar12) break;" if (parenthesized_expression "(pcVar10 <= pcVar12)" ( (binary_expression "pcVar10 <= pcVar12" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "pcVar9 = pcVar12 + 1;" (assignment_expression "pcVar9 = pcVar12 + 1" identifier = (binary_expression "pcVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3[(int)pcVar12] != '\0')" ( (binary_expression "param_3[(int)pcVar12] != '\0'" (subscript_expression "param_3[(int)pcVar12]" identifier [ (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "pcVar12 = pcVar12 + 1;" (assignment_expression "pcVar12 = pcVar12 + 1" identifier = (binary_expression "pcVar12 + 1" identifier + number_literal)) ;) (if_statement "if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (if_statement "if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }" if (parenthesized_expression "(pcVar12 <= pcVar10)" ( (binary_expression "pcVar12 <= pcVar10" identifier <= identifier) )) (compound_statement "{\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }" { (expression_statement "iStack_b4 = (int)pcVar10 - (int)pcVar12;" (assignment_expression "iStack_b4 = (int)pcVar10 - (int)pcVar12" identifier = (binary_expression "(int)pcVar10 - (int)pcVar12" (cast_expression "(int)pcVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar10 = param_3 + (int)pcVar10;" (assignment_expression "pcVar10 = param_3 + (int)pcVar10" identifier = (binary_expression "param_3 + (int)pcVar10" identifier + (cast_expression "(int)pcVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*pcVar10 = '\0';" (assignment_expression "*pcVar10 = '\0'" (pointer_expression "*pcVar10" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000319a0;" goto statement_identifier ;) })) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (if_statement "if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(pcVar10 <= pcVar12)" ( (binary_expression "pcVar10 <= pcVar12" identifier <= identifier) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "iStack_b4 = -1;" (assignment_expression "iStack_b4 = -1" identifier = number_literal) ;) (expression_statement "uStack_c8 = 1;" (assignment_expression "uStack_c8 = 1" identifier = number_literal) ;) (expression_statement "pcVar11 = pcVar12;" (assignment_expression "pcVar11 = pcVar12" identifier = identifier) ;) (expression_statement "iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);" (assignment_expression "iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4)" identifier = (call_expression "FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4)" identifier (argument_list "(iVar4,pcVar10,pcVar12,&iStack_b4)" ( identifier , identifier , identifier , (pointer_expression "&iStack_b4" & identifier) )))) ;) (if_statement "if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" { (expression_statement "param_3 = *(char **)(iVar4 + 0x374);" (assignment_expression "param_3 = *(char **)(iVar4 + 0x374)" identifier = (pointer_expression "*(char **)(iVar4 + 0x374)" * (cast_expression "(char **)(iVar4 + 0x374)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x374)" ( (binary_expression "iVar4 + 0x374" identifier + number_literal) ))))) ;) (expression_statement "(param_3 + (int)pcVar12)[iStack_b4] = '\0';" (assignment_expression "(param_3 + (int)pcVar12)[iStack_b4] = '\0'" (subscript_expression "(param_3 + (int)pcVar12)[iStack_b4]" (parenthesized_expression "(param_3 + (int)pcVar12)" ( (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uStack_b0 = 2;" (assignment_expression "uStack_b0 = 2" identifier = number_literal) ;) }) (else_clause "else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" else (compound_statement "{\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" { (expression_statement "pcVar9 = *(char **)(iVar4 + 0x14c);" (assignment_expression "pcVar9 = *(char **)(iVar4 + 0x14c)" identifier = (pointer_expression "*(char **)(iVar4 + 0x14c)" * (cast_expression "(char **)(iVar4 + 0x14c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x14c)" ( (binary_expression "iVar4 + 0x14c" identifier + number_literal) ))))) ;) (if_statement "if (pcVar9 != (char *)0x0) goto LAB_00031abc;" if (parenthesized_expression "(pcVar9 != (char *)0x0)" ( (binary_expression "pcVar9 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;)) (expression_statement "(param_3 + (int)pcVar12)[iStack_b4] = '\0';" (assignment_expression "(param_3 + (int)pcVar12)[iStack_b4] = '\0'" (subscript_expression "(param_3 + (int)pcVar12)[iStack_b4]" (parenthesized_expression "(param_3 + (int)pcVar12)" ( (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uStack_b0 = 2;" (assignment_expression "uStack_b0 = 2" identifier = number_literal) ;) }))) (labeled_statement "LAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;" statement_identifier : (expression_statement "pcStack_9c = param_3 + (int)unaff_s0;" (assignment_expression "pcStack_9c = param_3 + (int)unaff_s0" identifier = (binary_expression "param_3 + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "pcStack_98 = param_3 + (int)pcVar13;" (assignment_expression "pcStack_98 = param_3 + (int)pcVar13" identifier = (binary_expression "param_3 + (int)pcVar13" identifier + (cast_expression "(int)pcVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcStack_a8 = param_3 + (int)pcVar12;" (assignment_expression "pcStack_a8 = param_3 + (int)pcVar12" identifier = (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uStack_a4 = 0;" (assignment_expression "uStack_a4 = 0" identifier = number_literal) ;) (expression_statement "iStack_a0 = iStack_b4;" (assignment_expression "iStack_a0 = iStack_b4" identifier = identifier) ;) (expression_statement "pcVar11 = (char *)&uStack_b0;" (assignment_expression "pcVar11 = (char *)&uStack_b0" identifier = (cast_expression "(char *)&uStack_b0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&uStack_b0" & identifier))) ;) (expression_statement "pcStack_ac = param_3;" (assignment_expression "pcStack_ac = param_3" identifier = identifier) ;) (expression_statement "iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);" (assignment_expression "iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1)" identifier = (call_expression "FUN_00035a1c(iVar4,pcVar8,pcVar11,1)" identifier (argument_list "(iVar4,pcVar8,pcVar11,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "pcVar9 = (char *)0x0;" (assignment_expression "pcVar9 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x1084" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (if_statement "if (pcVar9 == (char *)0x0) goto LAB_00031ad0;" if (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;)) (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b50);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b50)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" * (cast_expression "(code **)(puStack_c0 + -0x7b50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b50)" ( (binary_expression "puStack_c0 + -0x7b50" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;) })) }))) (expression_statement "FUN_0002d154(iVar4,pcVar10);" (call_expression "FUN_0002d154(iVar4,pcVar10)" identifier (argument_list "(iVar4,pcVar10)" ( identifier , identifier ))) ;) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x2f14" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7b50))();" (call_expression "(**(code **)(puStack_c0 + -0x7b50))()" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7b50))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7b50)" * (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" * (cast_expression "(code **)(puStack_c0 + -0x7b50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b50)" ( (binary_expression "puStack_c0 + -0x7b50" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) }) (else_clause "else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" else (if_statement "if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }" { (expression_statement "pcVar9 = pcVar10;" (assignment_expression "pcVar9 = pcVar10" identifier = identifier) ;) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) }) (else_clause "else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" else (compound_statement "{\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" { (expression_statement "*(int *)(iVar4 + 0x354) = iVar2 + -1;" (assignment_expression "*(int *)(iVar4 + 0x354) = iVar2 + -1" (pointer_expression "*(int *)(iVar4 + 0x354)" * (cast_expression "(int *)(iVar4 + 0x354)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x354)" ( (binary_expression "iVar4 + 0x354" identifier + number_literal) )))) = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (if_statement "if (iVar2 + -1 != 1) goto LAB_00031754;" if (parenthesized_expression "(iVar2 + -1 != 1)" ( (binary_expression "iVar2 + -1 != 1" (binary_expression "iVar2 + -1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00031754;" goto statement_identifier ;)) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x39c0" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7b50))();" (call_expression "(**(code **)(puStack_c0 + -0x7b50))()" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7b50))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7b50)" * (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" * (cast_expression "(code **)(puStack_c0 + -0x7b50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b50)" ( (binary_expression "puStack_c0 + -0x7b50" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) }))))) (labeled_statement "LAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }" if (parenthesized_expression "(iStack_94 == **(int **)(puStack_c0 + -0x7b30))" ( (binary_expression "iStack_94 == **(int **)(puStack_c0 + -0x7b30)" identifier == (pointer_expression "**(int **)(puStack_c0 + -0x7b30)" * (pointer_expression "*(int **)(puStack_c0 + -0x7b30)" * (cast_expression "(int **)(puStack_c0 + -0x7b30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b30)" ( (binary_expression "puStack_c0 + -0x7b30" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b68);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b68)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x7b68)" * (cast_expression "(code **)(puStack_c0 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b68)" ( (binary_expression "puStack_c0 + -0x7b68" identifier + number_literal) ))))) ;) (expression_statement "pcVar16 = FUN_00031b30;" (assignment_expression "pcVar16 = FUN_00031b30" identifier = identifier) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iStack_ec = **(int **)(pcVar15 + 0x24990);" (assignment_expression "iStack_ec = **(int **)(pcVar15 + 0x24990)" identifier = (pointer_expression "**(int **)(pcVar15 + 0x24990)" * (pointer_expression "*(int **)(pcVar15 + 0x24990)" * (cast_expression "(int **)(pcVar15 + 0x24990)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24990)" ( (binary_expression "pcVar15 + 0x24990" identifier + number_literal) )))))) ;) (expression_statement "uVar3 = *(uint *)(iVar2 + 0x124);" (assignment_expression "uVar3 = *(uint *)(iVar2 + 0x124)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x124)" * (cast_expression "(uint *)(iVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x124)" ( (binary_expression "iVar2 + 0x124" identifier + number_literal) ))))) ;) (expression_statement "pcStack_e8 = unaff_s0;" (assignment_expression "pcStack_e8 = unaff_s0" identifier = identifier) ;) (expression_statement "pcStack_e4 = pcVar10;" (assignment_expression "pcStack_e4 = pcVar10" identifier = identifier) ;) (expression_statement "pcStack_e0 = param_3;" (assignment_expression "pcStack_e0 = param_3" identifier = identifier) ;) (expression_statement "pcStack_dc = pcVar16;" (assignment_expression "pcStack_dc = pcVar16" identifier = identifier) ;) (if_statement "if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" if (parenthesized_expression "((uVar3 & 1) == 0)" ( (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }" { (expression_statement "(**(code **)(pcVar15 + 0x248e0))();" (call_expression "(**(code **)(pcVar15 + 0x248e0))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x248e0))" ( (pointer_expression "**(code **)(pcVar15 + 0x248e0)" * (pointer_expression "*(code **)(pcVar15 + 0x248e0)" * (cast_expression "(code **)(pcVar15 + 0x248e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x248e0)" ( (binary_expression "pcVar15 + 0x248e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) }) (else_clause "else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" else (if_statement "if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" if (parenthesized_expression "((uVar3 & 4) == 0)" ( (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" { (if_statement "if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" if (parenthesized_expression "((int)(uVar3 << 0xf) < 0)" ( (binary_expression "(int)(uVar3 << 0xf) < 0" (cast_expression "(int)(uVar3 << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar3 << 0xf)" ( (binary_expression "uVar3 << 0xf" identifier << number_literal) ))) < number_literal) )) (compound_statement "{\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" { (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" ( (pointer_expression "**(code **)(pcVar15 + 0x24914)" * (pointer_expression "*(code **)(pcVar15 + 0x24914)" * (cast_expression "(code **)(pcVar15 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24914)" ( (binary_expression "pcVar15 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) }) (else_clause "else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" else (if_statement "if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" if (parenthesized_expression "(pcVar11 == (char *)0x8)" ( (binary_expression "pcVar11 == (char *)0x8" identifier == (cast_expression "(char *)0x8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }" { (expression_statement "FUN_0002cfe0();" (call_expression "FUN_0002cfe0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0002d154(iVar2,0);" (call_expression "FUN_0002d154(iVar2,0)" identifier (argument_list "(iVar2,0)" ( identifier , number_literal ))) ;) (expression_statement "uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);" (assignment_expression "uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4)" identifier = (call_expression "(**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4)" (parenthesized_expression "(**(code **)(pcVar15 + 0x24810))" ( (pointer_expression "**(code **)(pcVar15 + 0x24810)" * (pointer_expression "*(code **)(pcVar15 + 0x24810)" * (cast_expression "(code **)(pcVar15 + 0x24810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24810)" ( (binary_expression "pcVar15 + 0x24810" identifier + number_literal) ))))) )) (argument_list "(iVar2,auStack_f4)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);" (assignment_expression "uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0)" identifier = (call_expression "(**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0)" (parenthesized_expression "(**(code **)(pcVar15 + 0x24810))" ( (pointer_expression "**(code **)(pcVar15 + 0x24810)" * (pointer_expression "*(code **)(pcVar15 + 0x24810)" * (cast_expression "(code **)(pcVar15 + 0x24810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24810)" ( (binary_expression "pcVar15 + 0x24810" identifier + number_literal) ))))) )) (argument_list "(iVar2,auStack_f0)" ( identifier , identifier )))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) (expression_statement "iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);" (assignment_expression "iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7)" identifier = (call_expression "(**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7)" (parenthesized_expression "(**(code **)(pcVar15 + 0x2484c))" ( (pointer_expression "**(code **)(pcVar15 + 0x2484c)" * (pointer_expression "*(code **)(pcVar15 + 0x2484c)" * (cast_expression "(code **)(pcVar15 + 0x2484c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x2484c)" ( (binary_expression "pcVar15 + 0x2484c" identifier + number_literal) ))))) )) (argument_list "(iVar2,pcVar9,uVar6,uVar7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "pcVar11 = pcVar9;" (assignment_expression "pcVar11 = pcVar9" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }" { (expression_statement "*(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;" (assignment_expression "*(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000" (pointer_expression "*(uint *)(iVar2 + 0x124)" * (cast_expression "(uint *)(iVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x124)" ( (binary_expression "iVar2 + 0x124" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar2 + 0x124) | 0x10000" (pointer_expression "*(uint *)(iVar2 + 0x124)" * (cast_expression "(uint *)(iVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x124)" ( (binary_expression "iVar2 + 0x124" identifier + number_literal) )))) | number_literal)) ;) })) }) (else_clause "else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" else (compound_statement "{\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" { (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" ( (pointer_expression "**(code **)(pcVar15 + 0x24914)" * (pointer_expression "*(code **)(pcVar15 + 0x24914)" * (cast_expression "(code **)(pcVar15 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24914)" ( (binary_expression "pcVar15 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) }))))) (goto_statement "goto LAB_00031bc4;" goto statement_identifier ;) })))) (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" ( (pointer_expression "**(code **)(pcVar15 + 0x24914)" * (pointer_expression "*(code **)(pcVar15 + 0x24914)" * (cast_expression "(code **)(pcVar15 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24914)" ( (binary_expression "pcVar15 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) (labeled_statement "LAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }" if (parenthesized_expression "(iStack_ec == **(int **)(pcVar15 + 0x24990))" ( (binary_expression "iStack_ec == **(int **)(pcVar15 + 0x24990)" identifier == (pointer_expression "**(int **)(pcVar15 + 0x24990)" * (pointer_expression "*(int **)(pcVar15 + 0x24990)" * (cast_expression "(int **)(pcVar15 + 0x24990)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24990)" ( (binary_expression "pcVar15 + 0x24990" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "(**(code **)(pcVar15 + 0x24958))();" (call_expression "(**(code **)(pcVar15 + 0x24958))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24958))" ( (pointer_expression "**(code **)(pcVar15 + 0x24958)" * (pointer_expression "*(code **)(pcVar15 + 0x24958)" * (cast_expression "(code **)(pcVar15 + 0x24958)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24958)" ( (binary_expression "pcVar15 + 0x24958" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }" if (parenthesized_expression "((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000)" ( (binary_expression "(*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000" (parenthesized_expression "(*(uint *)(pcVar11 + 8) & 0x60000)" ( (binary_expression "*(uint *)(pcVar11 + 8) & 0x60000" (pointer_expression "*(uint *)(pcVar11 + 8)" * (cast_expression "(uint *)(pcVar11 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 8)" ( (binary_expression "pcVar11 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }" { (expression_statement "*(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;" (assignment_expression "*(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1" (pointer_expression "*(uint *)(iVar4 + 0x308)" * (cast_expression "(uint *)(iVar4 + 0x308)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x308)" ( (binary_expression "iVar4 + 0x308" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar4 + 0x308) | 1" (pointer_expression "*(uint *)(iVar4 + 0x308)" * (cast_expression "(uint *)(iVar4 + 0x308)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x308)" ( (binary_expression "iVar4 + 0x308" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;" (assignment_expression "*(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1" (pointer_expression "*(int *)(pcVar11 + 0x118)" * (cast_expression "(int *)(pcVar11 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x118)" ( (binary_expression "pcVar11 + 0x118" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar11 + 0x118) + 1" (pointer_expression "*(int *)(pcVar11 + 0x118)" * (cast_expression "(int *)(pcVar11 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x118)" ( (binary_expression "pcVar11 + 0x118" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void png_handle_zTXt(png_structrp png_ptr,png_inforp info_ptr,png_uint_32 length)\n\n{\n  png_byte pVar1;\n  int iVar2;\n  png_uint_32 pVar3;\n  uint uVar4;\n  int iVar5;\n  png_charp *ppcVar6;\n  png_const_textp ppVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  png_bytep ppVar10;\n  png_structrp ppVar11;\n  png_structrp png_ptr_00;\n  png_inforp info_ptr_00;\n  png_const_textp ppVar12;\n  png_const_textp ppVar13;\n  png_const_textp ppVar14;\n  png_charp *unaff_s0;\n  png_bytep unaff_s1;\n  undefined4 unaff_s5;\n  png_const_textp ppVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  code *pcVar18;\n  png_byte apStackY_f4 [4];\n  undefined1 auStackY_f0 [4];\n  int iStackY_ec;\n  png_charp *ppcStackY_e8;\n  png_const_textp ppStackY_e4;\n  png_bytep ppStackY_e0;\n  code *pcStackY_dc;\n  png_alloc_size_t pStack_b4;\n  png_text pStack_b0;\n  int iStack_94;\n  png_charp *ppcStack_8c;\n  png_bytep ppStack_88;\n  png_uint_32 pStack_84;\n  png_structrp ppStack_80;\n  png_inforp ppStack_7c;\n  undefined4 uStack_78;\n  png_alloc_size_t uncompressed_length;\n  png_text text;\n  \n  iVar2 = *(int *)PTR___stack_chk_guard_000564c0;\n  pVar3 = png_ptr->user_chunk_cache_max;\n  ppVar11 = png_ptr;\n  ppVar13 = (png_const_textp)length;\n  if (pVar3 == 0) {\nLAB_00031414:\n    uVar4 = png_ptr->mode;\n    if ((uVar4 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      ppVar13 = (png_const_textp)&DAT_00000002;\n      if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }\n      unaff_s1 = png_read_buffer(png_ptr,length,2);\n      if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }\n    }\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x2f14);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }\n  else if (pVar3 == 1) {\n    info_ptr_00 = (png_inforp)length;\n    png_crc_finish(png_ptr,length);\n  }\n  else {\n    png_ptr->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031414;\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }\nLAB_0003169c:\n  if (iVar2 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar16 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  iStack_94 = **(int **)(puVar16 + 0x24ddc);\n  pVar3 = ppVar11->user_chunk_cache_max;\n  ppVar14 = ppVar13;\n  ppcStack_8c = unaff_s0;\n  ppStack_88 = unaff_s1;\n  pStack_84 = length;\n  ppStack_80 = png_ptr;\n  ppStack_7c = info_ptr;\n  uStack_78 = unaff_s5;\n  if (pVar3 == 0) {\nLAB_00031754:\n    uVar4 = ppVar11->mode;\n    if ((uVar4 & 1) == 0) {\n      (**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);\n    }\n    else {\n      ppVar14 = (png_const_textp)0x1;\n      if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }\n      length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);\n      if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }\n    }\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }\n  else if (pVar3 == 1) {\n    ppVar12 = ppVar13;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    png_ptr_00 = ppVar11;\n  }\n  else {\n    ppVar11->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031754;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puVar16 + 0x24ddc)) {\n    return;\n  }\n  pcVar17 = *(code **)(puVar16 + 0x24da4);\n  pcVar18 = png_handle_acTL;\n  (*pcVar17)();\n  iStackY_ec = **(int **)(pcVar17 + 0x24990);\n  uVar4 = png_ptr_00->mode;\n  ppcStackY_e8 = unaff_s0;\n  ppStackY_e4 = ppVar13;\n  ppStackY_e0 = (png_bytep)length;\n  pcStackY_dc = pcVar18;\n  if ((uVar4 & 1) == 0) {\n    (**(code **)(pcVar17 + 0x248e0))();\n    ppVar14 = ppVar13;\n  }\n  else if ((uVar4 & 4) == 0) {\n    if ((int)(uVar4 << 0xf) < 0) {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar17 + 0x24914))();\n  png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n  ppVar11 = png_ptr_00;\nLAB_00031bc4:\n  if (iStackY_ec == **(int **)(pcVar17 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar17 + 0x24958))();\n  if (((uint)ppVar14->text & 0x60000) == 0x20000) {\n    ppVar11->apng_flags = ppVar11->apng_flags | 1;\n    ppVar14[10].compression = ppVar14[10].compression + 1;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void png_handle_zTXt(png_structrp png_ptr,png_inforp info_ptr,png_uint_32 length)\n\n{\n  png_byte pVar1;\n  int iVar2;\n  png_uint_32 pVar3;\n  uint uVar4;\n  int iVar5;\n  png_charp *ppcVar6;\n  png_const_textp ppVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  png_bytep ppVar10;\n  png_structrp ppVar11;\n  png_structrp png_ptr_00;\n  png_inforp info_ptr_00;\n  png_const_textp ppVar12;\n  png_const_textp ppVar13;\n  png_const_textp ppVar14;\n  png_charp *unaff_s0;\n  png_bytep unaff_s1;\n  undefined4 unaff_s5;\n  png_const_textp ppVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  code *pcVar18;\n  png_byte apStackY_f4 [4];\n  undefined1 auStackY_f0 [4];\n  int iStackY_ec;\n  png_charp *ppcStackY_e8;\n  png_const_textp ppStackY_e4;\n  png_bytep ppStackY_e0;\n  code *pcStackY_dc;\n  png_alloc_size_t pStack_b4;\n  png_text pStack_b0;\n  int iStack_94;\n  png_charp *ppcStack_8c;\n  png_bytep ppStack_88;\n  png_uint_32 pStack_84;\n  png_structrp ppStack_80;\n  png_inforp ppStack_7c;\n  undefined4 uStack_78;\n  png_alloc_size_t uncompressed_length;\n  png_text text;\n  \n  iVar2 = *(int *)PTR___stack_chk_guard_000564c0;\n  pVar3 = png_ptr->user_chunk_cache_max;\n  ppVar11 = png_ptr;\n  ppVar13 = (png_const_textp)length;\n  if (pVar3 == 0) {\nLAB_00031414:\n    uVar4 = png_ptr->mode;\n    if ((uVar4 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      ppVar13 = (png_const_textp)&DAT_00000002;\n      if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }\n      unaff_s1 = png_read_buffer(png_ptr,length,2);\n      if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }\n    }\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x2f14);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }\n  else if (pVar3 == 1) {\n    info_ptr_00 = (png_inforp)length;\n    png_crc_finish(png_ptr,length);\n  }\n  else {\n    png_ptr->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031414;\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }\nLAB_0003169c:\n  if (iVar2 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar16 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  iStack_94 = **(int **)(puVar16 + 0x24ddc);\n  pVar3 = ppVar11->user_chunk_cache_max;\n  ppVar14 = ppVar13;\n  ppcStack_8c = unaff_s0;\n  ppStack_88 = unaff_s1;\n  pStack_84 = length;\n  ppStack_80 = png_ptr;\n  ppStack_7c = info_ptr;\n  uStack_78 = unaff_s5;\n  if (pVar3 == 0) {\nLAB_00031754:\n    uVar4 = ppVar11->mode;\n    if ((uVar4 & 1) == 0) {\n      (**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);\n    }\n    else {\n      ppVar14 = (png_const_textp)0x1;\n      if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }\n      length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);\n      if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }\n    }\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }\n  else if (pVar3 == 1) {\n    ppVar12 = ppVar13;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    png_ptr_00 = ppVar11;\n  }\n  else {\n    ppVar11->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031754;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puVar16 + 0x24ddc)) {\n    return;\n  }\n  pcVar17 = *(code **)(puVar16 + 0x24da4);\n  pcVar18 = png_handle_acTL;\n  (*pcVar17)();\n  iStackY_ec = **(int **)(pcVar17 + 0x24990);\n  uVar4 = png_ptr_00->mode;\n  ppcStackY_e8 = unaff_s0;\n  ppStackY_e4 = ppVar13;\n  ppStackY_e0 = (png_bytep)length;\n  pcStackY_dc = pcVar18;\n  if ((uVar4 & 1) == 0) {\n    (**(code **)(pcVar17 + 0x248e0))();\n    ppVar14 = ppVar13;\n  }\n  else if ((uVar4 & 4) == 0) {\n    if ((int)(uVar4 << 0xf) < 0) {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar17 + 0x24914))();\n  png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n  ppVar11 = png_ptr_00;\nLAB_00031bc4:\n  if (iStackY_ec == **(int **)(pcVar17 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar17 + 0x24958))();\n  if (((uint)ppVar14->text & 0x60000) == 0x20000) {\n    ppVar11->apng_flags = ppVar11->apng_flags | 1;\n    ppVar14[10].compression = ppVar14[10].compression + 1;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "png_handle_zTXt(png_structrp png_ptr,png_inforp info_ptr,png_uint_32 length)" identifier (parameter_list "(png_structrp png_ptr,png_inforp info_ptr,png_uint_32 length)" ( (parameter_declaration "png_structrp png_ptr" type_identifier identifier) , (parameter_declaration "png_inforp info_ptr" type_identifier identifier) , (parameter_declaration "png_uint_32 length" type_identifier identifier) ))) (compound_statement "{\n  png_byte pVar1;\n  int iVar2;\n  png_uint_32 pVar3;\n  uint uVar4;\n  int iVar5;\n  png_charp *ppcVar6;\n  png_const_textp ppVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  png_bytep ppVar10;\n  png_structrp ppVar11;\n  png_structrp png_ptr_00;\n  png_inforp info_ptr_00;\n  png_const_textp ppVar12;\n  png_const_textp ppVar13;\n  png_const_textp ppVar14;\n  png_charp *unaff_s0;\n  png_bytep unaff_s1;\n  undefined4 unaff_s5;\n  png_const_textp ppVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  code *pcVar18;\n  png_byte apStackY_f4 [4];\n  undefined1 auStackY_f0 [4];\n  int iStackY_ec;\n  png_charp *ppcStackY_e8;\n  png_const_textp ppStackY_e4;\n  png_bytep ppStackY_e0;\n  code *pcStackY_dc;\n  png_alloc_size_t pStack_b4;\n  png_text pStack_b0;\n  int iStack_94;\n  png_charp *ppcStack_8c;\n  png_bytep ppStack_88;\n  png_uint_32 pStack_84;\n  png_structrp ppStack_80;\n  png_inforp ppStack_7c;\n  undefined4 uStack_78;\n  png_alloc_size_t uncompressed_length;\n  png_text text;\n  \n  iVar2 = *(int *)PTR___stack_chk_guard_000564c0;\n  pVar3 = png_ptr->user_chunk_cache_max;\n  ppVar11 = png_ptr;\n  ppVar13 = (png_const_textp)length;\n  if (pVar3 == 0) {\nLAB_00031414:\n    uVar4 = png_ptr->mode;\n    if ((uVar4 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      ppVar13 = (png_const_textp)&DAT_00000002;\n      if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }\n      unaff_s1 = png_read_buffer(png_ptr,length,2);\n      if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }\n    }\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x2f14);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }\n  else if (pVar3 == 1) {\n    info_ptr_00 = (png_inforp)length;\n    png_crc_finish(png_ptr,length);\n  }\n  else {\n    png_ptr->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031414;\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }\nLAB_0003169c:\n  if (iVar2 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar16 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  iStack_94 = **(int **)(puVar16 + 0x24ddc);\n  pVar3 = ppVar11->user_chunk_cache_max;\n  ppVar14 = ppVar13;\n  ppcStack_8c = unaff_s0;\n  ppStack_88 = unaff_s1;\n  pStack_84 = length;\n  ppStack_80 = png_ptr;\n  ppStack_7c = info_ptr;\n  uStack_78 = unaff_s5;\n  if (pVar3 == 0) {\nLAB_00031754:\n    uVar4 = ppVar11->mode;\n    if ((uVar4 & 1) == 0) {\n      (**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);\n    }\n    else {\n      ppVar14 = (png_const_textp)0x1;\n      if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }\n      length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);\n      if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }\n    }\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }\n  else if (pVar3 == 1) {\n    ppVar12 = ppVar13;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    png_ptr_00 = ppVar11;\n  }\n  else {\n    ppVar11->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031754;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puVar16 + 0x24ddc)) {\n    return;\n  }\n  pcVar17 = *(code **)(puVar16 + 0x24da4);\n  pcVar18 = png_handle_acTL;\n  (*pcVar17)();\n  iStackY_ec = **(int **)(pcVar17 + 0x24990);\n  uVar4 = png_ptr_00->mode;\n  ppcStackY_e8 = unaff_s0;\n  ppStackY_e4 = ppVar13;\n  ppStackY_e0 = (png_bytep)length;\n  pcStackY_dc = pcVar18;\n  if ((uVar4 & 1) == 0) {\n    (**(code **)(pcVar17 + 0x248e0))();\n    ppVar14 = ppVar13;\n  }\n  else if ((uVar4 & 4) == 0) {\n    if ((int)(uVar4 << 0xf) < 0) {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar17 + 0x24914))();\n  png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n  ppVar11 = png_ptr_00;\nLAB_00031bc4:\n  if (iStackY_ec == **(int **)(pcVar17 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar17 + 0x24958))();\n  if (((uint)ppVar14->text & 0x60000) == 0x20000) {\n    ppVar11->apng_flags = ppVar11->apng_flags | 1;\n    ppVar14[10].compression = ppVar14[10].compression + 1;\n    return;\n  }\n  return;\n}" { (declaration "png_byte pVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "png_uint_32 pVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "png_charp *ppcVar6;" type_identifier (pointer_declarator "*ppcVar6" * identifier) ;) (declaration "png_const_textp ppVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "png_bytep ppVar10;" type_identifier identifier ;) (declaration "png_structrp ppVar11;" type_identifier identifier ;) (declaration "png_structrp png_ptr_00;" type_identifier identifier ;) (declaration "png_inforp info_ptr_00;" type_identifier identifier ;) (declaration "png_const_textp ppVar12;" type_identifier identifier ;) (declaration "png_const_textp ppVar13;" type_identifier identifier ;) (declaration "png_const_textp ppVar14;" type_identifier identifier ;) (declaration "png_charp *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "png_bytep unaff_s1;" type_identifier identifier ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "png_const_textp ppVar15;" type_identifier identifier ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "png_byte apStackY_f4 [4];" type_identifier (array_declarator "apStackY_f4 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStackY_f0 [4];" type_identifier (array_declarator "auStackY_f0 [4]" identifier [ number_literal ]) ;) (declaration "int iStackY_ec;" primitive_type identifier ;) (declaration "png_charp *ppcStackY_e8;" type_identifier (pointer_declarator "*ppcStackY_e8" * identifier) ;) (declaration "png_const_textp ppStackY_e4;" type_identifier identifier ;) (declaration "png_bytep ppStackY_e0;" type_identifier identifier ;) (declaration "code *pcStackY_dc;" type_identifier (pointer_declarator "*pcStackY_dc" * identifier) ;) (declaration "png_alloc_size_t pStack_b4;" type_identifier identifier ;) (declaration "png_text pStack_b0;" type_identifier identifier ;) (declaration "int iStack_94;" primitive_type identifier ;) (declaration "png_charp *ppcStack_8c;" type_identifier (pointer_declarator "*ppcStack_8c" * identifier) ;) (declaration "png_bytep ppStack_88;" type_identifier identifier ;) (declaration "png_uint_32 pStack_84;" type_identifier identifier ;) (declaration "png_structrp ppStack_80;" type_identifier identifier ;) (declaration "png_inforp ppStack_7c;" type_identifier identifier ;) (declaration "undefined4 uStack_78;" type_identifier identifier ;) (declaration "png_alloc_size_t uncompressed_length;" type_identifier identifier ;) (declaration "png_text text;" type_identifier identifier ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_000564c0;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_000564c0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000564c0" * (cast_expression "(int *)PTR___stack_chk_guard_000564c0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pVar3 = png_ptr->user_chunk_cache_max;" (assignment_expression "pVar3 = png_ptr->user_chunk_cache_max" identifier = (field_expression "png_ptr->user_chunk_cache_max" identifier -> field_identifier)) ;) (expression_statement "ppVar11 = png_ptr;" (assignment_expression "ppVar11 = png_ptr" identifier = identifier) ;) (expression_statement "ppVar13 = (png_const_textp)length;" (assignment_expression "ppVar13 = (png_const_textp)length" identifier = (cast_expression "(png_const_textp)length" ( (type_descriptor "png_const_textp" type_identifier) ) identifier)) ;) (if_statement "if (pVar3 == 0) {\nLAB_00031414:\n    uVar4 = png_ptr->mode;\n    if ((uVar4 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      ppVar13 = (png_const_textp)&DAT_00000002;\n      if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }\n      unaff_s1 = png_read_buffer(png_ptr,length,2);\n      if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }\n    }\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x2f14);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }\n  else if (pVar3 == 1) {\n    info_ptr_00 = (png_inforp)length;\n    png_crc_finish(png_ptr,length);\n  }\n  else {\n    png_ptr->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031414;\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }" if (parenthesized_expression "(pVar3 == 0)" ( (binary_expression "pVar3 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00031414:\n    uVar4 = png_ptr->mode;\n    if ((uVar4 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      ppVar13 = (png_const_textp)&DAT_00000002;\n      if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }\n      unaff_s1 = png_read_buffer(png_ptr,length,2);\n      if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }\n    }\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x2f14);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }" { (labeled_statement "LAB_00031414:\n    uVar4 = png_ptr->mode;" statement_identifier : (expression_statement "uVar4 = png_ptr->mode;" (assignment_expression "uVar4 = png_ptr->mode" identifier = (field_expression "png_ptr->mode" identifier -> field_identifier)) ;)) (if_statement "if ((uVar4 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      ppVar13 = (png_const_textp)&DAT_00000002;\n      if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }\n      unaff_s1 = png_read_buffer(png_ptr,length,2);\n      if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }\n    }" if (parenthesized_expression "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);\n    }" { (expression_statement "(*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c);" (call_expression "(*(code *)PTR_png_chunk_error_00056520)(png_ptr,PTR_LAB_0005601c + 0x376c)" (parenthesized_expression "(*(code *)PTR_png_chunk_error_00056520)" ( (pointer_expression "*(code *)PTR_png_chunk_error_00056520" * (cast_expression "(code *)PTR_png_chunk_error_00056520" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,PTR_LAB_0005601c + 0x376c)" ( identifier , (binary_expression "PTR_LAB_0005601c + 0x376c" identifier + number_literal) ))) ;) }) (else_clause "else {\n      ppVar13 = (png_const_textp)&DAT_00000002;\n      if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }\n      unaff_s1 = png_read_buffer(png_ptr,length,2);\n      if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }\n    }" else (compound_statement "{\n      ppVar13 = (png_const_textp)&DAT_00000002;\n      if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }\n      unaff_s1 = png_read_buffer(png_ptr,length,2);\n      if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }\n    }" { (expression_statement "ppVar13 = (png_const_textp)&DAT_00000002;" (assignment_expression "ppVar13 = (png_const_textp)&DAT_00000002" identifier = (binary_expression "(png_const_textp)&DAT_00000002" (parenthesized_expression "(png_const_textp)" ( identifier )) & identifier)) ;) (if_statement "if ((uVar4 & 4) != 0) {\n        png_ptr->mode = uVar4 | 8;\n      }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        png_ptr->mode = uVar4 | 8;\n      }" { (expression_statement "png_ptr->mode = uVar4 | 8;" (assignment_expression "png_ptr->mode = uVar4 | 8" (field_expression "png_ptr->mode" identifier -> field_identifier) = (binary_expression "uVar4 | 8" identifier | number_literal)) ;) })) (expression_statement "unaff_s1 = png_read_buffer(png_ptr,length,2);" (assignment_expression "unaff_s1 = png_read_buffer(png_ptr,length,2)" identifier = (call_expression "png_read_buffer(png_ptr,length,2)" identifier (argument_list "(png_ptr,length,2)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (unaff_s1 != (png_bytep)0x0) {\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }" if (parenthesized_expression "(unaff_s1 != (png_bytep)0x0)" ( (binary_expression "unaff_s1 != (png_bytep)0x0" identifier != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n        ppVar13 = (png_const_textp)length;\n        png_crc_read(png_ptr,unaff_s1,length);\n        info_ptr_00 = (png_inforp)0x0;\n        iVar5 = png_crc_finish(png_ptr,0);\n        if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }\n        goto LAB_0003169c;\n      }" { (expression_statement "ppVar13 = (png_const_textp)length;" (assignment_expression "ppVar13 = (png_const_textp)length" identifier = (cast_expression "(png_const_textp)length" ( (type_descriptor "png_const_textp" type_identifier) ) identifier)) ;) (expression_statement "png_crc_read(png_ptr,unaff_s1,length);" (call_expression "png_crc_read(png_ptr,unaff_s1,length)" identifier (argument_list "(png_ptr,unaff_s1,length)" ( identifier , identifier , identifier ))) ;) (expression_statement "info_ptr_00 = (png_inforp)0x0;" (assignment_expression "info_ptr_00 = (png_inforp)0x0" identifier = (cast_expression "(png_inforp)0x0" ( (type_descriptor "png_inforp" type_identifier) ) number_literal)) ;) (expression_statement "iVar5 = png_crc_finish(png_ptr,0);" (assignment_expression "iVar5 = png_crc_finish(png_ptr,0)" identifier = (call_expression "png_crc_finish(png_ptr,0)" identifier (argument_list "(png_ptr,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar5 == 0) {\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }\n          ppVar11 = png_ptr;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)();\n        }" { (if_statement "if (length == 0) {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }" if (parenthesized_expression "(length == 0)" ( (binary_expression "length == 0" identifier == number_literal) )) (compound_statement "{\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }" { (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x3810)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x3810)" ( (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal) )))) ;) }) (else_clause "else if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }" else (if_statement "if (*unaff_s1 == '\0') {\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }\n          else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }" if (parenthesized_expression "(*unaff_s1 == '\0')" ( (binary_expression "*unaff_s1 == '\0'" (pointer_expression "*unaff_s1" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n          }" { (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x3810)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x3810)" ( (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal) )))) ;) }) (else_clause "else {\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }" else (compound_statement "{\n            ppcVar6 = (png_charp *)0x0;\n            for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }\n            if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }\n          }" { (expression_statement "ppcVar6 = (png_charp *)0x0;" (assignment_expression "ppcVar6 = (png_charp *)0x0" identifier = (cast_expression "(png_charp *)0x0" ( (type_descriptor "png_charp *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (for_statement "for (unaff_s0 = (png_charp *)0x1;\n                ((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'));\n                unaff_s0 = (png_charp *)((int)unaff_s0 + 1)) {\n              ppcVar6 = unaff_s0;\n            }" for ( (assignment_expression "unaff_s0 = (png_charp *)0x1" identifier = (cast_expression "(png_charp *)0x1" ( (type_descriptor "png_charp *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (parenthesized_expression "((png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'))" ( (binary_expression "(png_charp *)length != unaff_s0 &&\n                (*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0')" (binary_expression "(png_charp *)length != unaff_s0" (cast_expression "(png_charp *)length" ( (type_descriptor "png_charp *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) && (parenthesized_expression "(*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0')" ( (binary_expression "*(png_bytep)((int)unaff_s0 + (int)unaff_s1) != '\0'" (pointer_expression "*(png_bytep)((int)unaff_s0 + (int)unaff_s1)" * (call_expression "(png_bytep)((int)unaff_s0 + (int)unaff_s1)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "((int)unaff_s0 + (int)unaff_s1)" ( (binary_expression "(int)unaff_s0 + (int)unaff_s1" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ; (assignment_expression "unaff_s0 = (png_charp *)((int)unaff_s0 + 1)" identifier = (cast_expression "(png_charp *)((int)unaff_s0 + 1)" ( (type_descriptor "png_charp *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + 1)" ( (binary_expression "(int)unaff_s0 + 1" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ) (compound_statement "{\n              ppcVar6 = unaff_s0;\n            }" { (expression_statement "ppcVar6 = unaff_s0;" (assignment_expression "ppcVar6 = unaff_s0" identifier = identifier) ;) })) (if_statement "if (ppcVar6 < (png_charp *)0x4f) {\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }\n            else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }" if (parenthesized_expression "(ppcVar6 < (png_charp *)0x4f)" ( (binary_expression "ppcVar6 < (png_charp *)0x4f" identifier < (cast_expression "(png_charp *)0x4f" ( (type_descriptor "png_charp *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }\n            }" { (if_statement "if (length < ppcVar6 + 1) {\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }\n              else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }" if (parenthesized_expression "(length < ppcVar6 + 1)" ( (binary_expression "length < ppcVar6 + 1" identifier < (binary_expression "ppcVar6 + 1" identifier + number_literal)) )) (compound_statement "{\n                info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);\n              }" { (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x47fc)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x47fc)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x47fc)" ( (binary_expression "PTR_LAB_0005601c + 0x47fc" identifier + number_literal) )))) ;) }) (else_clause "else {\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }" else (compound_statement "{\n                unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);\n                if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }\n              }" { (expression_statement "unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1);" (assignment_expression "unaff_s1 = (png_bytep)((int)ppcVar6 + (int)unaff_s1)" identifier = (call_expression "(png_bytep)((int)ppcVar6 + (int)unaff_s1)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "((int)ppcVar6 + (int)unaff_s1)" ( (binary_expression "(int)ppcVar6 + (int)unaff_s1" (cast_expression "(int)ppcVar6" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (unaff_s1[2] == '\0') {\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }" if (parenthesized_expression "(unaff_s1[2] == '\0')" ( (binary_expression "unaff_s1[2] == '\0'" (subscript_expression "unaff_s1[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  uncompressed_length = 0xffffffff;\n                  unaff_s1 = (png_bytep)((int)ppcVar6 + 3);\n                  unaff_s5 = 1;\n                  ppVar13 = (png_const_textp)unaff_s1;\n                  iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);\n                  if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }\n                }" { (expression_statement "uncompressed_length = 0xffffffff;" (assignment_expression "uncompressed_length = 0xffffffff" identifier = number_literal) ;) (expression_statement "unaff_s1 = (png_bytep)((int)ppcVar6 + 3);" (assignment_expression "unaff_s1 = (png_bytep)((int)ppcVar6 + 3)" identifier = (call_expression "(png_bytep)((int)ppcVar6 + 3)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "((int)ppcVar6 + 3)" ( (binary_expression "(int)ppcVar6 + 3" (cast_expression "(int)ppcVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s5 = 1;" (assignment_expression "unaff_s5 = 1" identifier = number_literal) ;) (expression_statement "ppVar13 = (png_const_textp)unaff_s1;" (assignment_expression "ppVar13 = (png_const_textp)unaff_s1" identifier = (cast_expression "(png_const_textp)unaff_s1" ( (type_descriptor "png_const_textp" type_identifier) ) identifier)) ;) (expression_statement "iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1);" (assignment_expression "iVar5 = png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1)" identifier = (call_expression "png_decompress_chunk\n                                    (png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1)" identifier (argument_list "(png_ptr,length,(png_uint_32)unaff_s1,&uncompressed_length,1)" ( identifier , identifier , (cast_expression "(png_uint_32)unaff_s1" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) , (pointer_expression "&uncompressed_length" & identifier) , number_literal )))) ;) (if_statement "if (iVar5 == 1) {\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }\n                  else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n                    ppVar10 = png_ptr->read_buffer;\n                    if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }\n                  }" { (expression_statement "ppVar10 = png_ptr->read_buffer;" (assignment_expression "ppVar10 = png_ptr->read_buffer" identifier = (field_expression "png_ptr->read_buffer" identifier -> field_identifier)) ;) (if_statement "if (ppVar10 == (png_bytep)0x0) {\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }\n                    else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }" if (parenthesized_expression "(ppVar10 == (png_bytep)0x0)" ( (binary_expression "ppVar10 == (png_bytep)0x0" identifier == (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);\n                    }" { (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a04)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x3a04)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x3a04)" ( (binary_expression "PTR_LAB_0005601c + 0x3a04" identifier + number_literal) )))) ;) }) (else_clause "else {\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }" else (compound_statement "{\n                      (ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';\n                      text.compression = 0;\n                      text.text = (png_charp)(ppVar10 + (int)unaff_s1);\n                      text.text_length = uncompressed_length;\n                      text.itxt_length = 0;\n                      text.lang = (png_charp)0x0;\n                      text.lang_key = (png_charp)0x0;\n                      ppVar13 = &text;\n                      ppVar11 = png_ptr;\n                      text.key = (png_charp)ppVar10;\n                      iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);\n                      info_ptr_00 = (png_inforp)PTR_LAB_0005601c;\n                      if (iVar5 == 0) goto LAB_0003169c;\n                      info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);\n                    }" { (expression_statement "(ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0';" (assignment_expression "(ppVar10 + (int)unaff_s0)[uncompressed_length + 2] = '\0'" (subscript_expression "(ppVar10 + (int)unaff_s0)[uncompressed_length + 2]" (parenthesized_expression "(ppVar10 + (int)unaff_s0)" ( (binary_expression "ppVar10 + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ (binary_expression "uncompressed_length + 2" identifier + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "text.compression = 0;" (assignment_expression "text.compression = 0" (field_expression "text.compression" identifier . field_identifier) = number_literal) ;) (expression_statement "text.text = (png_charp)(ppVar10 + (int)unaff_s1);" (assignment_expression "text.text = (png_charp)(ppVar10 + (int)unaff_s1)" (field_expression "text.text" identifier . field_identifier) = (call_expression "(png_charp)(ppVar10 + (int)unaff_s1)" (parenthesized_expression "(png_charp)" ( identifier )) (argument_list "(ppVar10 + (int)unaff_s1)" ( (binary_expression "ppVar10 + (int)unaff_s1" identifier + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "text.text_length = uncompressed_length;" (assignment_expression "text.text_length = uncompressed_length" (field_expression "text.text_length" identifier . field_identifier) = identifier) ;) (expression_statement "text.itxt_length = 0;" (assignment_expression "text.itxt_length = 0" (field_expression "text.itxt_length" identifier . field_identifier) = number_literal) ;) (expression_statement "text.lang = (png_charp)0x0;" (assignment_expression "text.lang = (png_charp)0x0" (field_expression "text.lang" identifier . field_identifier) = (cast_expression "(png_charp)0x0" ( (type_descriptor "png_charp" type_identifier) ) number_literal)) ;) (expression_statement "text.lang_key = (png_charp)0x0;" (assignment_expression "text.lang_key = (png_charp)0x0" (field_expression "text.lang_key" identifier . field_identifier) = (cast_expression "(png_charp)0x0" ( (type_descriptor "png_charp" type_identifier) ) number_literal)) ;) (expression_statement "ppVar13 = &text;" (assignment_expression "ppVar13 = &text" identifier = (pointer_expression "&text" & identifier)) ;) (expression_statement "ppVar11 = png_ptr;" (assignment_expression "ppVar11 = png_ptr" identifier = identifier) ;) (expression_statement "text.key = (png_charp)ppVar10;" (assignment_expression "text.key = (png_charp)ppVar10" (field_expression "text.key" identifier . field_identifier) = (cast_expression "(png_charp)ppVar10" ( (type_descriptor "png_charp" type_identifier) ) identifier)) ;) (expression_statement "iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1);" (assignment_expression "iVar5 = png_set_text_2(png_ptr,info_ptr,ppVar13,1)" identifier = (call_expression "png_set_text_2(png_ptr,info_ptr,ppVar13,1)" identifier (argument_list "(png_ptr,info_ptr,ppVar13,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "info_ptr_00 = (png_inforp)PTR_LAB_0005601c;" (assignment_expression "info_ptr_00 = (png_inforp)PTR_LAB_0005601c" identifier = (cast_expression "(png_inforp)PTR_LAB_0005601c" ( (type_descriptor "png_inforp" type_identifier) ) identifier)) ;) (if_statement "if (iVar5 == 0) goto LAB_0003169c;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;)) (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x1084)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x1084)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x1084)" ( (binary_expression "PTR_LAB_0005601c + 0x1084" identifier + number_literal) )))) ;) }))) }) (else_clause "else {\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }" else (compound_statement "{\n                    info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;\n                    ppVar11 = png_ptr;\n                    if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;\n                  }" { (expression_statement "info_ptr_00 = (png_inforp)(png_ptr->zstream).msg;" (assignment_expression "info_ptr_00 = (png_inforp)(png_ptr->zstream).msg" identifier = (field_expression "(png_inforp)(png_ptr->zstream).msg" (call_expression "(png_inforp)(png_ptr->zstream)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(png_ptr->zstream)" ( (field_expression "png_ptr->zstream" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "ppVar11 = png_ptr;" (assignment_expression "ppVar11 = png_ptr" identifier = identifier) ;) (if_statement "if (info_ptr_00 == (png_inforp)0x0) goto LAB_0003169c;" if (parenthesized_expression "(info_ptr_00 == (png_inforp)0x0)" ( (binary_expression "info_ptr_00 == (png_inforp)0x0" identifier == (cast_expression "(png_inforp)0x0" ( (type_descriptor "png_inforp" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;)) }))) }) (else_clause "else {\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }" else (compound_statement "{\n                  info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);\n                }" { (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3a24)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x3a24)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x3a24)" ( (binary_expression "PTR_LAB_0005601c + 0x3a24" identifier + number_literal) )))) ;) }))) }))) }) (else_clause "else {\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }" else (compound_statement "{\n              info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);\n            }" { (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x3810)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x3810)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x3810)" ( (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal) )))) ;) }))) }))))) (expression_statement "ppVar11 = png_ptr;" (assignment_expression "ppVar11 = png_ptr" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)();" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)()" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;) })) }))) (expression_statement "png_crc_finish(png_ptr,length);" (call_expression "png_crc_finish(png_ptr,length)" identifier (argument_list "(png_ptr,length)" ( identifier , identifier ))) ;) (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x2f14);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x2f14)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x2f14)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x2f14)" ( (binary_expression "PTR_LAB_0005601c + 0x2f14" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)();" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)()" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else if (pVar3 == 1) {\n    info_ptr_00 = (png_inforp)length;\n    png_crc_finish(png_ptr,length);\n  }\n  else {\n    png_ptr->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031414;\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }" else (if_statement "if (pVar3 == 1) {\n    info_ptr_00 = (png_inforp)length;\n    png_crc_finish(png_ptr,length);\n  }\n  else {\n    png_ptr->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031414;\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }" if (parenthesized_expression "(pVar3 == 1)" ( (binary_expression "pVar3 == 1" identifier == number_literal) )) (compound_statement "{\n    info_ptr_00 = (png_inforp)length;\n    png_crc_finish(png_ptr,length);\n  }" { (expression_statement "info_ptr_00 = (png_inforp)length;" (assignment_expression "info_ptr_00 = (png_inforp)length" identifier = (cast_expression "(png_inforp)length" ( (type_descriptor "png_inforp" type_identifier) ) identifier)) ;) (expression_statement "png_crc_finish(png_ptr,length);" (call_expression "png_crc_finish(png_ptr,length)" identifier (argument_list "(png_ptr,length)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    png_ptr->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031414;\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }" else (compound_statement "{\n    png_ptr->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031414;\n    png_crc_finish(png_ptr,length);\n    info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);\n    (*(code *)PTR_png_chunk_benign_error_000564a0)();\n  }" { (expression_statement "png_ptr->user_chunk_cache_max = pVar3 - 1;" (assignment_expression "png_ptr->user_chunk_cache_max = pVar3 - 1" (field_expression "png_ptr->user_chunk_cache_max" identifier -> field_identifier) = (binary_expression "pVar3 - 1" identifier - number_literal)) ;) (if_statement "if (pVar3 - 1 != 1) goto LAB_00031414;" if (parenthesized_expression "(pVar3 - 1 != 1)" ( (binary_expression "pVar3 - 1 != 1" (binary_expression "pVar3 - 1" identifier - number_literal) != number_literal) )) (goto_statement "goto LAB_00031414;" goto statement_identifier ;)) (expression_statement "png_crc_finish(png_ptr,length);" (call_expression "png_crc_finish(png_ptr,length)" identifier (argument_list "(png_ptr,length)" ( identifier , identifier ))) ;) (expression_statement "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0);" (assignment_expression "info_ptr_00 = (png_inforp)(PTR_LAB_0005601c + 0x39c0)" identifier = (call_expression "(png_inforp)(PTR_LAB_0005601c + 0x39c0)" (parenthesized_expression "(png_inforp)" ( identifier )) (argument_list "(PTR_LAB_0005601c + 0x39c0)" ( (binary_expression "PTR_LAB_0005601c + 0x39c0" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)();" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)()" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))))) (labeled_statement "LAB_0003169c:\n  if (iVar2 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == *(int *)PTR___stack_chk_guard_000564c0)" ( (binary_expression "iVar2 == *(int *)PTR___stack_chk_guard_000564c0" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000564c0" * (cast_expression "(int *)PTR___stack_chk_guard_000564c0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "puVar16 = PTR___stack_chk_fail_00056488;" (assignment_expression "puVar16 = PTR___stack_chk_fail_00056488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00056488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00056488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00056488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00056488" * (cast_expression "(code *)PTR___stack_chk_fail_00056488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iStack_94 = **(int **)(puVar16 + 0x24ddc);" (assignment_expression "iStack_94 = **(int **)(puVar16 + 0x24ddc)" identifier = (pointer_expression "**(int **)(puVar16 + 0x24ddc)" * (pointer_expression "*(int **)(puVar16 + 0x24ddc)" * (cast_expression "(int **)(puVar16 + 0x24ddc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24ddc)" ( (binary_expression "puVar16 + 0x24ddc" identifier + number_literal) )))))) ;) (expression_statement "pVar3 = ppVar11->user_chunk_cache_max;" (assignment_expression "pVar3 = ppVar11->user_chunk_cache_max" identifier = (field_expression "ppVar11->user_chunk_cache_max" identifier -> field_identifier)) ;) (expression_statement "ppVar14 = ppVar13;" (assignment_expression "ppVar14 = ppVar13" identifier = identifier) ;) (expression_statement "ppcStack_8c = unaff_s0;" (assignment_expression "ppcStack_8c = unaff_s0" identifier = identifier) ;) (expression_statement "ppStack_88 = unaff_s1;" (assignment_expression "ppStack_88 = unaff_s1" identifier = identifier) ;) (expression_statement "pStack_84 = length;" (assignment_expression "pStack_84 = length" identifier = identifier) ;) (expression_statement "ppStack_80 = png_ptr;" (assignment_expression "ppStack_80 = png_ptr" identifier = identifier) ;) (expression_statement "ppStack_7c = info_ptr;" (assignment_expression "ppStack_7c = info_ptr" identifier = identifier) ;) (expression_statement "uStack_78 = unaff_s5;" (assignment_expression "uStack_78 = unaff_s5" identifier = identifier) ;) (if_statement "if (pVar3 == 0) {\nLAB_00031754:\n    uVar4 = ppVar11->mode;\n    if ((uVar4 & 1) == 0) {\n      (**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);\n    }\n    else {\n      ppVar14 = (png_const_textp)0x1;\n      if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }\n      length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);\n      if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }\n    }\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }\n  else if (pVar3 == 1) {\n    ppVar12 = ppVar13;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    png_ptr_00 = ppVar11;\n  }\n  else {\n    ppVar11->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031754;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }" if (parenthesized_expression "(pVar3 == 0)" ( (binary_expression "pVar3 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00031754:\n    uVar4 = ppVar11->mode;\n    if ((uVar4 & 1) == 0) {\n      (**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);\n    }\n    else {\n      ppVar14 = (png_const_textp)0x1;\n      if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }\n      length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);\n      if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }\n    }\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }" { (labeled_statement "LAB_00031754:\n    uVar4 = ppVar11->mode;" statement_identifier : (expression_statement "uVar4 = ppVar11->mode;" (assignment_expression "uVar4 = ppVar11->mode" identifier = (field_expression "ppVar11->mode" identifier -> field_identifier)) ;)) (if_statement "if ((uVar4 & 1) == 0) {\n      (**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);\n    }\n    else {\n      ppVar14 = (png_const_textp)0x1;\n      if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }\n      length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);\n      if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }\n    }" if (parenthesized_expression "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);\n    }" { (expression_statement "(**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c);" (call_expression "(**(code **)(puVar16 + 0x24e3c))(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c)" (parenthesized_expression "(**(code **)(puVar16 + 0x24e3c))" ( (pointer_expression "**(code **)(puVar16 + 0x24e3c)" * (pointer_expression "*(code **)(puVar16 + 0x24e3c)" * (cast_expression "(code **)(puVar16 + 0x24e3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24e3c)" ( (binary_expression "puVar16 + 0x24e3c" identifier + number_literal) ))))) )) (argument_list "(ppVar11,*(int *)(puVar16 + 0x24938) + 0x376c)" ( identifier , (binary_expression "*(int *)(puVar16 + 0x24938) + 0x376c" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) ))) ;) }) (else_clause "else {\n      ppVar14 = (png_const_textp)0x1;\n      if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }\n      length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);\n      if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }\n    }" else (compound_statement "{\n      ppVar14 = (png_const_textp)0x1;\n      if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }\n      length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);\n      if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }\n    }" { (expression_statement "ppVar14 = (png_const_textp)0x1;" (assignment_expression "ppVar14 = (png_const_textp)0x1" identifier = (cast_expression "(png_const_textp)0x1" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) ;) (if_statement "if ((uVar4 & 4) != 0) {\n        ppVar11->mode = uVar4 | 8;\n      }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        ppVar11->mode = uVar4 | 8;\n      }" { (expression_statement "ppVar11->mode = uVar4 | 8;" (assignment_expression "ppVar11->mode = uVar4 | 8" (field_expression "ppVar11->mode" identifier -> field_identifier) = (binary_expression "uVar4 | 8" identifier | number_literal)) ;) })) (expression_statement "length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1);" (assignment_expression "length = (png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1)" identifier = (cast_expression "(png_uint_32)\n               png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1)" ( (type_descriptor "png_uint_32" type_identifier) ) (call_expression "png_read_buffer(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1)" identifier (argument_list "(ppVar11,(png_alloc_size_t)((int)&ppVar13->compression + 1),1)" ( identifier , (call_expression "(png_alloc_size_t)((int)&ppVar13->compression + 1)" (parenthesized_expression "(png_alloc_size_t)" ( identifier )) (argument_list "((int)&ppVar13->compression + 1)" ( (binary_expression "(int)&ppVar13->compression + 1" (cast_expression "(int)&ppVar13->compression" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar13->compression" & (field_expression "ppVar13->compression" identifier -> field_identifier))) + number_literal) ))) , number_literal ))))) ;) (if_statement "if ((png_bytep)length != (png_bytep)0x0) {\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }" if (parenthesized_expression "((png_bytep)length != (png_bytep)0x0)" ( (binary_expression "(png_bytep)length != (png_bytep)0x0" (cast_expression "(png_bytep)length" ( (type_descriptor "png_bytep" type_identifier) ) identifier) != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n        ppVar14 = ppVar13;\n        png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);\n        ppVar12 = (png_const_textp)0x0;\n        png_ptr_00 = ppVar11;\n        iVar2 = png_crc_finish(ppVar11,0);\n        if (iVar2 != 0) goto LAB_00031ad0;\n        if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        (*pcVar17)();\n        png_ptr_00 = ppVar11;\n        goto LAB_00031ad0;\n      }" { (expression_statement "ppVar14 = ppVar13;" (assignment_expression "ppVar14 = ppVar13" identifier = identifier) ;) (expression_statement "png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13);" (call_expression "png_crc_read(ppVar11,(png_bytep)length,(png_uint_32)ppVar13)" identifier (argument_list "(ppVar11,(png_bytep)length,(png_uint_32)ppVar13)" ( identifier , (cast_expression "(png_bytep)length" ( (type_descriptor "png_bytep" type_identifier) ) identifier) , (cast_expression "(png_uint_32)ppVar13" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) ))) ;) (expression_statement "ppVar12 = (png_const_textp)0x0;" (assignment_expression "ppVar12 = (png_const_textp)0x0" identifier = (cast_expression "(png_const_textp)0x0" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) ;) (expression_statement "png_ptr_00 = ppVar11;" (assignment_expression "png_ptr_00 = ppVar11" identifier = identifier) ;) (expression_statement "iVar2 = png_crc_finish(ppVar11,0);" (assignment_expression "iVar2 = png_crc_finish(ppVar11,0)" identifier = (call_expression "png_crc_finish(ppVar11,0)" identifier (argument_list "(ppVar11,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 != 0) goto LAB_00031ad0;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;)) (if_statement "if (ppVar13 == (png_const_textp)0x0) {\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }\n        else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }" if (parenthesized_expression "(ppVar13 == (png_const_textp)0x0)" ( (binary_expression "ppVar13 == (png_const_textp)0x0" identifier == (cast_expression "(png_const_textp)0x0" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) )) (compound_statement "{\n          ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\nLAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }" { (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x3810)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x3810" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) (labeled_statement "LAB_00031abc:\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);" statement_identifier : (expression_statement "pcVar17 = *(code **)(puVar16 + 0x24dbc);" (assignment_expression "pcVar17 = *(code **)(puVar16 + 0x24dbc)" identifier = (pointer_expression "*(code **)(puVar16 + 0x24dbc)" * (cast_expression "(code **)(puVar16 + 0x24dbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24dbc)" ( (binary_expression "puVar16 + 0x24dbc" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }" else (compound_statement "{\n          if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          ppVar12 = (png_const_textp)0x1;\n          ppVar7 = (png_const_textp)0x0;\n          while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }\n          if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pVar1 = ((png_bytep)(length + (int)ppVar7))[2];\n          unaff_s0 = &ppVar7->key;\n          if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = &ppVar7->key;\n          pStack_b4 = 0;\n          ppVar12 = (png_const_textp)unaff_s0;\n          if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }\n          ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);\n          ppVar7 = ppVar15;\n          if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }\n          ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);\n          if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          pStack_b4 = 0xffffffff;\n          ppVar14 = ppVar7;\n          iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);\n          if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\nLAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);\n          pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);\n          pStack_b0.text = (png_charp)(length + (int)ppVar7);\n          pStack_b0.text_length = 0;\n          pStack_b0.itxt_length = pStack_b4;\n          ppVar14 = &pStack_b0;\n          pStack_b0.key = (png_charp)length;\n          iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);\n          ppVar12 = (png_const_textp)0x0;\n          if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }\n          png_ptr_00 = ppVar11;\n          if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;\n          pcVar17 = *(code **)(puVar16 + 0x24dbc);\n        }" { (if_statement "if (*(png_byte *)length == '\0') {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(*(png_byte *)length == '\0')" ( (binary_expression "*(png_byte *)length == '\0'" (pointer_expression "*(png_byte *)length" * (cast_expression "(png_byte *)length" ( (type_descriptor "png_byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }" { (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x3810)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x3810" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "ppVar12 = (png_const_textp)0x1;" (assignment_expression "ppVar12 = (png_const_textp)0x1" identifier = (cast_expression "(png_const_textp)0x1" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) ;) (expression_statement "ppVar7 = (png_const_textp)0x0;" (assignment_expression "ppVar7 = (png_const_textp)0x0" identifier = (cast_expression "(png_const_textp)0x0" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) ;) (while_statement "while ((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))) {\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }" while (parenthesized_expression "((ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0')))" ( (parenthesized_expression "(ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0'))" ( (comma_expression "ppVar15 = ppVar12, ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0')" (assignment_expression "ppVar15 = ppVar12" identifier = identifier) , (binary_expression "ppVar13 != ppVar15 &&\n                 (*(png_bytep)(length + (int)ppVar15) != '\0')" (binary_expression "ppVar13 != ppVar15" identifier != identifier) && (parenthesized_expression "(*(png_bytep)(length + (int)ppVar15) != '\0')" ( (binary_expression "*(png_bytep)(length + (int)ppVar15) != '\0'" (pointer_expression "*(png_bytep)(length + (int)ppVar15)" * (call_expression "(png_bytep)(length + (int)ppVar15)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)ppVar15)" ( (binary_expression "length + (int)ppVar15" identifier + (cast_expression "(int)ppVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence ')) )))) )) )) (compound_statement "{\n            ppVar7 = ppVar15;\n            ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);\n          }" { (expression_statement "ppVar7 = ppVar15;" (assignment_expression "ppVar7 = ppVar15" identifier = identifier) ;) (expression_statement "ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1);" (assignment_expression "ppVar12 = (png_const_textp)((int)&ppVar15->compression + 1)" identifier = (call_expression "(png_const_textp)((int)&ppVar15->compression + 1)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "((int)&ppVar15->compression + 1)" ( (binary_expression "(int)&ppVar15->compression + 1" (cast_expression "(int)&ppVar15->compression" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar15->compression" & (field_expression "ppVar15->compression" identifier -> field_identifier))) + number_literal) )))) ;) })) (if_statement "if ((png_const_textp)0x4e < ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "((png_const_textp)0x4e < ppVar7)" ( (binary_expression "(png_const_textp)0x4e < ppVar7" (cast_expression "(png_const_textp)0x4e" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal) < identifier) )) (compound_statement "{\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);\n            goto LAB_00031abc;\n          }" { (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3810)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x3810)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x3810" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (if_statement "if (ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(ppVar13 < (png_const_textp)((int)&ppVar7->key + 2))" ( (binary_expression "ppVar13 < (png_const_textp)((int)&ppVar7->key + 2)" identifier < (call_expression "(png_const_textp)((int)&ppVar7->key + 2)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "((int)&ppVar7->key + 2)" ( (binary_expression "(int)&ppVar7->key + 2" (cast_expression "(int)&ppVar7->key" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar7->key" & (field_expression "ppVar7->key" identifier -> field_identifier))) + number_literal) )))) )) (compound_statement "{\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x47fc)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x47fc" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "pVar1 = ((png_bytep)(length + (int)ppVar7))[2];" (assignment_expression "pVar1 = ((png_bytep)(length + (int)ppVar7))[2]" identifier = (subscript_expression "((png_bytep)(length + (int)ppVar7))[2]" (parenthesized_expression "((png_bytep)(length + (int)ppVar7))" ( (call_expression "(png_bytep)(length + (int)ppVar7)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)ppVar7)" ( (binary_expression "length + (int)ppVar7" identifier + (cast_expression "(int)ppVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) [ number_literal ])) ;) (expression_statement "unaff_s0 = &ppVar7->key;" (assignment_expression "unaff_s0 = &ppVar7->key" identifier = (pointer_expression "&ppVar7->key" & (field_expression "ppVar7->key" identifier -> field_identifier))) ;) (if_statement "if (pVar1 != '\0') {\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(pVar1 != '\0')" ( (binary_expression "pVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }" { (if_statement "if (pVar1 == '\x01') {\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }\n            else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }" if (parenthesized_expression "(pVar1 == '\x01')" ( (binary_expression "pVar1 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n              unaff_s0 = &ppVar7->key;\n              if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }" { (expression_statement "unaff_s0 = &ppVar7->key;" (assignment_expression "unaff_s0 = &ppVar7->key" identifier = (pointer_expression "&ppVar7->key" & (field_expression "ppVar7->key" identifier -> field_identifier))) ;) (if_statement "if (((png_bytep)(length + (int)ppVar7))[3] == '\0') goto LAB_00031900;" if (parenthesized_expression "(((png_bytep)(length + (int)ppVar7))[3] == '\0')" ( (binary_expression "((png_bytep)(length + (int)ppVar7))[3] == '\0'" (subscript_expression "((png_bytep)(length + (int)ppVar7))[3]" (parenthesized_expression "((png_bytep)(length + (int)ppVar7))" ( (call_expression "(png_bytep)(length + (int)ppVar7)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)ppVar7)" ( (binary_expression "length + (int)ppVar7" identifier + (cast_expression "(int)ppVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00031900;" goto statement_identifier ;)) (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x3a40)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x3a40" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) }) (else_clause "else {\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }" else (compound_statement "{\n              ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);\n            }" { (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x3a40)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x3a40)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x3a40" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) }))) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (labeled_statement "LAB_00031900:\n          unaff_s0 = &ppVar7->key;" statement_identifier : (expression_statement "unaff_s0 = &ppVar7->key;" (assignment_expression "unaff_s0 = &ppVar7->key" identifier = (pointer_expression "&ppVar7->key" & (field_expression "ppVar7->key" identifier -> field_identifier))) ;)) (expression_statement "pStack_b4 = 0;" (assignment_expression "pStack_b4 = 0" identifier = number_literal) ;) (expression_statement "ppVar12 = (png_const_textp)unaff_s0;" (assignment_expression "ppVar12 = (png_const_textp)unaff_s0" identifier = (cast_expression "(png_const_textp)unaff_s0" ( (type_descriptor "png_const_textp" type_identifier) ) identifier)) ;) (if_statement "if ((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')) {\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }" if (parenthesized_expression "((unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0'))" ( (binary_expression "(unaff_s0 < ppVar13) && (*(png_bytep)(length + (int)unaff_s0) != '\0')" (parenthesized_expression "(unaff_s0 < ppVar13)" ( (binary_expression "unaff_s0 < ppVar13" identifier < identifier) )) && (parenthesized_expression "(*(png_bytep)(length + (int)unaff_s0) != '\0')" ( (binary_expression "*(png_bytep)(length + (int)unaff_s0) != '\0'" (pointer_expression "*(png_bytep)(length + (int)unaff_s0)" * (call_expression "(png_bytep)(length + (int)unaff_s0)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)unaff_s0)" ( (binary_expression "length + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            ppcVar6 = &ppVar7->key;\n            do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');\n          }" { (expression_statement "ppcVar6 = &ppVar7->key;" (assignment_expression "ppcVar6 = &ppVar7->key" identifier = (pointer_expression "&ppVar7->key" & (field_expression "ppVar7->key" identifier -> field_identifier))) ;) (do_statement "do {\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            } while (*(png_bytep)(length + (int)ppVar12) != '\0');" do (compound_statement "{\n              ppVar12 = (png_const_textp)((int)ppcVar6 + 1);\n              if (ppVar13 == ppVar12) break;\n              ppcVar6 = (png_charp *)&ppVar12->compression;\n            }" { (expression_statement "ppVar12 = (png_const_textp)((int)ppcVar6 + 1);" (assignment_expression "ppVar12 = (png_const_textp)((int)ppcVar6 + 1)" identifier = (call_expression "(png_const_textp)((int)ppcVar6 + 1)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "((int)ppcVar6 + 1)" ( (binary_expression "(int)ppcVar6 + 1" (cast_expression "(int)ppcVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (ppVar13 == ppVar12) break;" if (parenthesized_expression "(ppVar13 == ppVar12)" ( (binary_expression "ppVar13 == ppVar12" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "ppcVar6 = (png_charp *)&ppVar12->compression;" (assignment_expression "ppcVar6 = (png_charp *)&ppVar12->compression" identifier = (cast_expression "(png_charp *)&ppVar12->compression" ( (type_descriptor "png_charp *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ppVar12->compression" & (field_expression "ppVar12->compression" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(*(png_bytep)(length + (int)ppVar12) != '\0')" ( (binary_expression "*(png_bytep)(length + (int)ppVar12) != '\0'" (pointer_expression "*(png_bytep)(length + (int)ppVar12)" * (call_expression "(png_bytep)(length + (int)ppVar12)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)ppVar12)" ( (binary_expression "length + (int)ppVar12" identifier + (cast_expression "(int)ppVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1);" (assignment_expression "ppVar15 = (png_const_textp)((int)&ppVar12->compression + 1)" identifier = (call_expression "(png_const_textp)((int)&ppVar12->compression + 1)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "((int)&ppVar12->compression + 1)" ( (binary_expression "(int)&ppVar12->compression + 1" (cast_expression "(int)&ppVar12->compression" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar12->compression" & (field_expression "ppVar12->compression" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "ppVar7 = ppVar15;" (assignment_expression "ppVar7 = ppVar15" identifier = identifier) ;) (if_statement "if ((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')) {\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }" if (parenthesized_expression "((ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0'))" ( (binary_expression "(ppVar15 < ppVar13) && (*(png_bytep)(length + (int)ppVar15) != '\0')" (parenthesized_expression "(ppVar15 < ppVar13)" ( (binary_expression "ppVar15 < ppVar13" identifier < identifier) )) && (parenthesized_expression "(*(png_bytep)(length + (int)ppVar15) != '\0')" ( (binary_expression "*(png_bytep)(length + (int)ppVar15) != '\0'" (pointer_expression "*(png_bytep)(length + (int)ppVar15)" * (call_expression "(png_bytep)(length + (int)ppVar15)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)ppVar15)" ( (binary_expression "length + (int)ppVar15" identifier + (cast_expression "(int)ppVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);\n            do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');\n          }" { (expression_statement "ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2);" (assignment_expression "ppVar12 = (png_const_textp)((int)&ppVar12->compression + 2)" identifier = (call_expression "(png_const_textp)((int)&ppVar12->compression + 2)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "((int)&ppVar12->compression + 2)" ( (binary_expression "(int)&ppVar12->compression + 2" (cast_expression "(int)&ppVar12->compression" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar12->compression" & (field_expression "ppVar12->compression" identifier -> field_identifier))) + number_literal) )))) ;) (do_statement "do {\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            } while (*(png_bytep)(length + (int)ppVar7) != '\0');" do (compound_statement "{\n              ppVar7 = ppVar12;\n              if (ppVar13 <= ppVar7) break;\n              ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);\n            }" { (expression_statement "ppVar7 = ppVar12;" (assignment_expression "ppVar7 = ppVar12" identifier = identifier) ;) (if_statement "if (ppVar13 <= ppVar7) break;" if (parenthesized_expression "(ppVar13 <= ppVar7)" ( (binary_expression "ppVar13 <= ppVar7" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1);" (assignment_expression "ppVar12 = (png_const_textp)((int)&ppVar7->compression + 1)" identifier = (call_expression "(png_const_textp)((int)&ppVar7->compression + 1)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "((int)&ppVar7->compression + 1)" ( (binary_expression "(int)&ppVar7->compression + 1" (cast_expression "(int)&ppVar7->compression" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar7->compression" & (field_expression "ppVar7->compression" identifier -> field_identifier))) + number_literal) )))) ;) }) while (parenthesized_expression "(*(png_bytep)(length + (int)ppVar7) != '\0')" ( (binary_expression "*(png_bytep)(length + (int)ppVar7) != '\0'" (pointer_expression "*(png_bytep)(length + (int)ppVar7)" * (call_expression "(png_bytep)(length + (int)ppVar7)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)ppVar7)" ( (binary_expression "length + (int)ppVar7" identifier + (cast_expression "(int)ppVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1);" (assignment_expression "ppVar7 = (png_const_textp)((int)&ppVar7->compression + 1)" identifier = (call_expression "(png_const_textp)((int)&ppVar7->compression + 1)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "((int)&ppVar7->compression + 1)" ( (binary_expression "(int)&ppVar7->compression + 1" (cast_expression "(int)&ppVar7->compression" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar7->compression" & (field_expression "ppVar7->compression" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (pVar1 == '\0') {\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(pVar1 == '\0')" ( (binary_expression "pVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (if_statement "if (ppVar7 <= ppVar13) {\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }" if (parenthesized_expression "(ppVar7 <= ppVar13)" ( (binary_expression "ppVar7 <= ppVar13" identifier <= identifier) )) (compound_statement "{\n              pStack_b4 = (int)ppVar13 - (int)ppVar7;\n              ppVar13 = (png_const_textp)(length + (int)ppVar13);\n              *(png_byte *)&ppVar13->compression = '\0';\n              pStack_b0.compression = 1;\n              goto LAB_000319a0;\n            }" { (expression_statement "pStack_b4 = (int)ppVar13 - (int)ppVar7;" (assignment_expression "pStack_b4 = (int)ppVar13 - (int)ppVar7" identifier = (binary_expression "(int)ppVar13 - (int)ppVar7" (cast_expression "(int)ppVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ppVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ppVar13 = (png_const_textp)(length + (int)ppVar13);" (assignment_expression "ppVar13 = (png_const_textp)(length + (int)ppVar13)" identifier = (call_expression "(png_const_textp)(length + (int)ppVar13)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(length + (int)ppVar13)" ( (binary_expression "length + (int)ppVar13" identifier + (cast_expression "(int)ppVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*(png_byte *)&ppVar13->compression = '\0';" (assignment_expression "*(png_byte *)&ppVar13->compression = '\0'" (pointer_expression "*(png_byte *)&ppVar13->compression" * (cast_expression "(png_byte *)&ppVar13->compression" ( (type_descriptor "png_byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ppVar13->compression" & (field_expression "ppVar13->compression" identifier -> field_identifier)))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pStack_b0.compression = 1;" (assignment_expression "pStack_b0.compression = 1" (field_expression "pStack_b0.compression" identifier . field_identifier) = number_literal) ;) (goto_statement "goto LAB_000319a0;" goto statement_identifier ;) })) (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x47fc)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x47fc" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (if_statement "if (ppVar13 <= ppVar7) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(ppVar13 <= ppVar7)" ( (binary_expression "ppVar13 <= ppVar7" identifier <= identifier) )) (compound_statement "{\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x47fc)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x47fc)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x47fc" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "pStack_b4 = 0xffffffff;" (assignment_expression "pStack_b4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "ppVar14 = ppVar7;" (assignment_expression "ppVar14 = ppVar7" identifier = identifier) ;) (expression_statement "iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1);" (assignment_expression "iVar2 = png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1)" identifier = (call_expression "png_decompress_chunk\n                            (ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1)" identifier (argument_list "(ppVar11,(png_uint_32)ppVar13,(png_uint_32)ppVar7,&pStack_b4,1)" ( identifier , (cast_expression "(png_uint_32)ppVar13" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) , (cast_expression "(png_uint_32)ppVar7" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) , (pointer_expression "&pStack_b4" & identifier) , number_literal )))) ;) (if_statement "if (iVar2 == 1) {\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }\n          else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n            length = (png_uint_32)ppVar11->read_buffer;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }" { (expression_statement "length = (png_uint_32)ppVar11->read_buffer;" (assignment_expression "length = (png_uint_32)ppVar11->read_buffer" identifier = (cast_expression "(png_uint_32)ppVar11->read_buffer" ( (type_descriptor "png_uint_32" type_identifier) ) (field_expression "ppVar11->read_buffer" identifier -> field_identifier))) ;) (expression_statement "((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';" (assignment_expression "((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0'" (subscript_expression "((png_bytep)(length + (int)ppVar7))[pStack_b4]" (parenthesized_expression "((png_bytep)(length + (int)ppVar7))" ( (call_expression "(png_bytep)(length + (int)ppVar7)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)ppVar7)" ( (binary_expression "length + (int)ppVar7" identifier + (cast_expression "(int)ppVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pStack_b0.compression = 2;" (assignment_expression "pStack_b0.compression = 2" (field_expression "pStack_b0.compression" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }" else (compound_statement "{\n            ppVar12 = (png_const_textp)(ppVar11->zstream).msg;\n            if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;\n            ((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';\n            pStack_b0.compression = 2;\n          }" { (expression_statement "ppVar12 = (png_const_textp)(ppVar11->zstream).msg;" (assignment_expression "ppVar12 = (png_const_textp)(ppVar11->zstream).msg" identifier = (field_expression "(png_const_textp)(ppVar11->zstream).msg" (call_expression "(png_const_textp)(ppVar11->zstream)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(ppVar11->zstream)" ( (field_expression "ppVar11->zstream" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if (ppVar12 != (png_const_textp)0x0) goto LAB_00031abc;" if (parenthesized_expression "(ppVar12 != (png_const_textp)0x0)" ( (binary_expression "ppVar12 != (png_const_textp)0x0" identifier != (cast_expression "(png_const_textp)0x0" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;)) (expression_statement "((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0';" (assignment_expression "((png_bytep)(length + (int)ppVar7))[pStack_b4] = '\0'" (subscript_expression "((png_bytep)(length + (int)ppVar7))[pStack_b4]" (parenthesized_expression "((png_bytep)(length + (int)ppVar7))" ( (call_expression "(png_bytep)(length + (int)ppVar7)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(length + (int)ppVar7)" ( (binary_expression "length + (int)ppVar7" identifier + (cast_expression "(int)ppVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pStack_b0.compression = 2;" (assignment_expression "pStack_b0.compression = 2" (field_expression "pStack_b0.compression" identifier . field_identifier) = number_literal) ;) }))) (labeled_statement "LAB_000319a0:\n          pStack_b0.lang = (png_charp)(length + (int)unaff_s0);" statement_identifier : (expression_statement "pStack_b0.lang = (png_charp)(length + (int)unaff_s0);" (assignment_expression "pStack_b0.lang = (png_charp)(length + (int)unaff_s0)" (field_expression "pStack_b0.lang" identifier . field_identifier) = (call_expression "(png_charp)(length + (int)unaff_s0)" (parenthesized_expression "(png_charp)" ( identifier )) (argument_list "(length + (int)unaff_s0)" ( (binary_expression "length + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (expression_statement "pStack_b0.lang_key = (png_charp)(length + (int)ppVar15);" (assignment_expression "pStack_b0.lang_key = (png_charp)(length + (int)ppVar15)" (field_expression "pStack_b0.lang_key" identifier . field_identifier) = (call_expression "(png_charp)(length + (int)ppVar15)" (parenthesized_expression "(png_charp)" ( identifier )) (argument_list "(length + (int)ppVar15)" ( (binary_expression "length + (int)ppVar15" identifier + (cast_expression "(int)ppVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pStack_b0.text = (png_charp)(length + (int)ppVar7);" (assignment_expression "pStack_b0.text = (png_charp)(length + (int)ppVar7)" (field_expression "pStack_b0.text" identifier . field_identifier) = (call_expression "(png_charp)(length + (int)ppVar7)" (parenthesized_expression "(png_charp)" ( identifier )) (argument_list "(length + (int)ppVar7)" ( (binary_expression "length + (int)ppVar7" identifier + (cast_expression "(int)ppVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pStack_b0.text_length = 0;" (assignment_expression "pStack_b0.text_length = 0" (field_expression "pStack_b0.text_length" identifier . field_identifier) = number_literal) ;) (expression_statement "pStack_b0.itxt_length = pStack_b4;" (assignment_expression "pStack_b0.itxt_length = pStack_b4" (field_expression "pStack_b0.itxt_length" identifier . field_identifier) = identifier) ;) (expression_statement "ppVar14 = &pStack_b0;" (assignment_expression "ppVar14 = &pStack_b0" identifier = (pointer_expression "&pStack_b0" & identifier)) ;) (expression_statement "pStack_b0.key = (png_charp)length;" (assignment_expression "pStack_b0.key = (png_charp)length" (field_expression "pStack_b0.key" identifier . field_identifier) = (cast_expression "(png_charp)length" ( (type_descriptor "png_charp" type_identifier) ) identifier)) ;) (expression_statement "iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1);" (assignment_expression "iVar2 = png_set_text_2(ppVar11,info_ptr_00,ppVar14,1)" identifier = (call_expression "png_set_text_2(ppVar11,info_ptr_00,ppVar14,1)" identifier (argument_list "(ppVar11,info_ptr_00,ppVar14,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "ppVar12 = (png_const_textp)0x0;" (assignment_expression "ppVar12 = (png_const_textp)0x0" identifier = (cast_expression "(png_const_textp)0x0" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) ;) (if_statement "if (iVar2 != 0) {\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);\n          }" { (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x1084)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x1084)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x1084" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "png_ptr_00 = ppVar11;" (assignment_expression "png_ptr_00 = ppVar11" identifier = identifier) ;) (if_statement "if (ppVar12 == (png_const_textp)0x0) goto LAB_00031ad0;" if (parenthesized_expression "(ppVar12 == (png_const_textp)0x0)" ( (binary_expression "ppVar12 == (png_const_textp)0x0" identifier == (cast_expression "(png_const_textp)0x0" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;)) (expression_statement "pcVar17 = *(code **)(puVar16 + 0x24dbc);" (assignment_expression "pcVar17 = *(code **)(puVar16 + 0x24dbc)" identifier = (pointer_expression "*(code **)(puVar16 + 0x24dbc)" * (cast_expression "(code **)(puVar16 + 0x24dbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24dbc)" ( (binary_expression "puVar16 + 0x24dbc" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "png_ptr_00 = ppVar11;" (assignment_expression "png_ptr_00 = ppVar11" identifier = identifier) ;) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;) })) }))) (expression_statement "png_crc_finish(ppVar11,(png_uint_32)ppVar13);" (call_expression "png_crc_finish(ppVar11,(png_uint_32)ppVar13)" identifier (argument_list "(ppVar11,(png_uint_32)ppVar13)" ( identifier , (cast_expression "(png_uint_32)ppVar13" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) ))) ;) (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x2f14)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x2f14)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x2f14" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar16 + 0x24dbc))();" (call_expression "(**(code **)(puVar16 + 0x24dbc))()" (parenthesized_expression "(**(code **)(puVar16 + 0x24dbc))" ( (pointer_expression "**(code **)(puVar16 + 0x24dbc)" * (pointer_expression "*(code **)(puVar16 + 0x24dbc)" * (cast_expression "(code **)(puVar16 + 0x24dbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24dbc)" ( (binary_expression "puVar16 + 0x24dbc" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "png_ptr_00 = ppVar11;" (assignment_expression "png_ptr_00 = ppVar11" identifier = identifier) ;) }) (else_clause "else if (pVar3 == 1) {\n    ppVar12 = ppVar13;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    png_ptr_00 = ppVar11;\n  }\n  else {\n    ppVar11->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031754;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }" else (if_statement "if (pVar3 == 1) {\n    ppVar12 = ppVar13;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    png_ptr_00 = ppVar11;\n  }\n  else {\n    ppVar11->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031754;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }" if (parenthesized_expression "(pVar3 == 1)" ( (binary_expression "pVar3 == 1" identifier == number_literal) )) (compound_statement "{\n    ppVar12 = ppVar13;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    png_ptr_00 = ppVar11;\n  }" { (expression_statement "ppVar12 = ppVar13;" (assignment_expression "ppVar12 = ppVar13" identifier = identifier) ;) (expression_statement "png_crc_finish(ppVar11,(png_uint_32)ppVar13);" (call_expression "png_crc_finish(ppVar11,(png_uint_32)ppVar13)" identifier (argument_list "(ppVar11,(png_uint_32)ppVar13)" ( identifier , (cast_expression "(png_uint_32)ppVar13" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) ))) ;) (expression_statement "png_ptr_00 = ppVar11;" (assignment_expression "png_ptr_00 = ppVar11" identifier = identifier) ;) }) (else_clause "else {\n    ppVar11->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031754;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }" else (compound_statement "{\n    ppVar11->user_chunk_cache_max = pVar3 - 1;\n    if (pVar3 - 1 != 1) goto LAB_00031754;\n    png_crc_finish(ppVar11,(png_uint_32)ppVar13);\n    ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);\n    (**(code **)(puVar16 + 0x24dbc))();\n    png_ptr_00 = ppVar11;\n  }" { (expression_statement "ppVar11->user_chunk_cache_max = pVar3 - 1;" (assignment_expression "ppVar11->user_chunk_cache_max = pVar3 - 1" (field_expression "ppVar11->user_chunk_cache_max" identifier -> field_identifier) = (binary_expression "pVar3 - 1" identifier - number_literal)) ;) (if_statement "if (pVar3 - 1 != 1) goto LAB_00031754;" if (parenthesized_expression "(pVar3 - 1 != 1)" ( (binary_expression "pVar3 - 1 != 1" (binary_expression "pVar3 - 1" identifier - number_literal) != number_literal) )) (goto_statement "goto LAB_00031754;" goto statement_identifier ;)) (expression_statement "png_crc_finish(ppVar11,(png_uint_32)ppVar13);" (call_expression "png_crc_finish(ppVar11,(png_uint_32)ppVar13)" identifier (argument_list "(ppVar11,(png_uint_32)ppVar13)" ( identifier , (cast_expression "(png_uint_32)ppVar13" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) ))) ;) (expression_statement "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0);" (assignment_expression "ppVar12 = (png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0)" identifier = (call_expression "(png_const_textp)(*(int *)(puVar16 + 0x24938) + 0x39c0)" (parenthesized_expression "(png_const_textp)" ( identifier )) (argument_list "(*(int *)(puVar16 + 0x24938) + 0x39c0)" ( (binary_expression "*(int *)(puVar16 + 0x24938) + 0x39c0" (pointer_expression "*(int *)(puVar16 + 0x24938)" * (cast_expression "(int *)(puVar16 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24938)" ( (binary_expression "puVar16 + 0x24938" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar16 + 0x24dbc))();" (call_expression "(**(code **)(puVar16 + 0x24dbc))()" (parenthesized_expression "(**(code **)(puVar16 + 0x24dbc))" ( (pointer_expression "**(code **)(puVar16 + 0x24dbc)" * (pointer_expression "*(code **)(puVar16 + 0x24dbc)" * (cast_expression "(code **)(puVar16 + 0x24dbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24dbc)" ( (binary_expression "puVar16 + 0x24dbc" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "png_ptr_00 = ppVar11;" (assignment_expression "png_ptr_00 = ppVar11" identifier = identifier) ;) }))))) (labeled_statement "LAB_00031ad0:\n  if (iStack_94 == **(int **)(puVar16 + 0x24ddc)) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_94 == **(int **)(puVar16 + 0x24ddc)) {\n    return;\n  }" if (parenthesized_expression "(iStack_94 == **(int **)(puVar16 + 0x24ddc))" ( (binary_expression "iStack_94 == **(int **)(puVar16 + 0x24ddc)" identifier == (pointer_expression "**(int **)(puVar16 + 0x24ddc)" * (pointer_expression "*(int **)(puVar16 + 0x24ddc)" * (cast_expression "(int **)(puVar16 + 0x24ddc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24ddc)" ( (binary_expression "puVar16 + 0x24ddc" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar17 = *(code **)(puVar16 + 0x24da4);" (assignment_expression "pcVar17 = *(code **)(puVar16 + 0x24da4)" identifier = (pointer_expression "*(code **)(puVar16 + 0x24da4)" * (cast_expression "(code **)(puVar16 + 0x24da4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24da4)" ( (binary_expression "puVar16 + 0x24da4" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = png_handle_acTL;" (assignment_expression "pcVar18 = png_handle_acTL" identifier = identifier) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iStackY_ec = **(int **)(pcVar17 + 0x24990);" (assignment_expression "iStackY_ec = **(int **)(pcVar17 + 0x24990)" identifier = (pointer_expression "**(int **)(pcVar17 + 0x24990)" * (pointer_expression "*(int **)(pcVar17 + 0x24990)" * (cast_expression "(int **)(pcVar17 + 0x24990)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x24990)" ( (binary_expression "pcVar17 + 0x24990" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = png_ptr_00->mode;" (assignment_expression "uVar4 = png_ptr_00->mode" identifier = (field_expression "png_ptr_00->mode" identifier -> field_identifier)) ;) (expression_statement "ppcStackY_e8 = unaff_s0;" (assignment_expression "ppcStackY_e8 = unaff_s0" identifier = identifier) ;) (expression_statement "ppStackY_e4 = ppVar13;" (assignment_expression "ppStackY_e4 = ppVar13" identifier = identifier) ;) (expression_statement "ppStackY_e0 = (png_bytep)length;" (assignment_expression "ppStackY_e0 = (png_bytep)length" identifier = (cast_expression "(png_bytep)length" ( (type_descriptor "png_bytep" type_identifier) ) identifier)) ;) (expression_statement "pcStackY_dc = pcVar18;" (assignment_expression "pcStackY_dc = pcVar18" identifier = identifier) ;) (if_statement "if ((uVar4 & 1) == 0) {\n    (**(code **)(pcVar17 + 0x248e0))();\n    ppVar14 = ppVar13;\n  }\n  else if ((uVar4 & 4) == 0) {\n    if ((int)(uVar4 << 0xf) < 0) {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    goto LAB_00031bc4;\n  }" if (parenthesized_expression "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    (**(code **)(pcVar17 + 0x248e0))();\n    ppVar14 = ppVar13;\n  }" { (expression_statement "(**(code **)(pcVar17 + 0x248e0))();" (call_expression "(**(code **)(pcVar17 + 0x248e0))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x248e0))" ( (pointer_expression "**(code **)(pcVar17 + 0x248e0)" * (pointer_expression "*(code **)(pcVar17 + 0x248e0)" * (cast_expression "(code **)(pcVar17 + 0x248e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x248e0)" ( (binary_expression "pcVar17 + 0x248e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "ppVar14 = ppVar13;" (assignment_expression "ppVar14 = ppVar13" identifier = identifier) ;) }) (else_clause "else if ((uVar4 & 4) == 0) {\n    if ((int)(uVar4 << 0xf) < 0) {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    goto LAB_00031bc4;\n  }" else (if_statement "if ((uVar4 & 4) == 0) {\n    if ((int)(uVar4 << 0xf) < 0) {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    goto LAB_00031bc4;\n  }" if (parenthesized_expression "((uVar4 & 4) == 0)" ( (binary_expression "(uVar4 & 4) == 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((int)(uVar4 << 0xf) < 0) {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    goto LAB_00031bc4;\n  }" { (if_statement "if ((int)(uVar4 << 0xf) < 0) {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }\n    else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }" if (parenthesized_expression "((int)(uVar4 << 0xf) < 0)" ( (binary_expression "(int)(uVar4 << 0xf) < 0" (cast_expression "(int)(uVar4 << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 << 0xf)" ( (binary_expression "uVar4 << 0xf" identifier << number_literal) ))) < number_literal) )) (compound_statement "{\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }" { (expression_statement "(**(code **)(pcVar17 + 0x24914))();" (call_expression "(**(code **)(pcVar17 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x24914))" ( (pointer_expression "**(code **)(pcVar17 + 0x24914)" * (pointer_expression "*(code **)(pcVar17 + 0x24914)" * (cast_expression "(code **)(pcVar17 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x24914)" ( (binary_expression "pcVar17 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);" (call_expression "png_crc_finish(png_ptr_00,(png_uint_32)ppVar14)" identifier (argument_list "(png_ptr_00,(png_uint_32)ppVar14)" ( identifier , (cast_expression "(png_uint_32)ppVar14" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) ))) ;) (expression_statement "ppVar11 = png_ptr_00;" (assignment_expression "ppVar11 = png_ptr_00" identifier = identifier) ;) }) (else_clause "else if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }" else (if_statement "if (ppVar14 == (png_const_textp)0x8) {\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }" if (parenthesized_expression "(ppVar14 == (png_const_textp)0x8)" ( (binary_expression "ppVar14 == (png_const_textp)0x8" identifier == (cast_expression "(png_const_textp)0x8" ( (type_descriptor "png_const_textp" type_identifier) ) number_literal)) )) (compound_statement "{\n      png_crc_read(png_ptr_00,apStackY_f4,8);\n      png_crc_finish(png_ptr_00,0);\n      uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);\n      uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);\n      ppVar11 = png_ptr_00;\n      iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);\n      ppVar14 = ppVar12;\n      if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }\n    }" { (expression_statement "png_crc_read(png_ptr_00,apStackY_f4,8);" (call_expression "png_crc_read(png_ptr_00,apStackY_f4,8)" identifier (argument_list "(png_ptr_00,apStackY_f4,8)" ( identifier , identifier , number_literal ))) ;) (expression_statement "png_crc_finish(png_ptr_00,0);" (call_expression "png_crc_finish(png_ptr_00,0)" identifier (argument_list "(png_ptr_00,0)" ( identifier , number_literal ))) ;) (expression_statement "uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4);" (assignment_expression "uVar8 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4)" identifier = (call_expression "(**(code **)(pcVar17 + 0x24810))(png_ptr_00,apStackY_f4)" (parenthesized_expression "(**(code **)(pcVar17 + 0x24810))" ( (pointer_expression "**(code **)(pcVar17 + 0x24810)" * (pointer_expression "*(code **)(pcVar17 + 0x24810)" * (cast_expression "(code **)(pcVar17 + 0x24810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x24810)" ( (binary_expression "pcVar17 + 0x24810" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,apStackY_f4)" ( identifier , identifier )))) ;) (expression_statement "uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0);" (assignment_expression "uVar9 = (**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0)" identifier = (call_expression "(**(code **)(pcVar17 + 0x24810))(png_ptr_00,auStackY_f0)" (parenthesized_expression "(**(code **)(pcVar17 + 0x24810))" ( (pointer_expression "**(code **)(pcVar17 + 0x24810)" * (pointer_expression "*(code **)(pcVar17 + 0x24810)" * (cast_expression "(code **)(pcVar17 + 0x24810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x24810)" ( (binary_expression "pcVar17 + 0x24810" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,auStackY_f0)" ( identifier , identifier )))) ;) (expression_statement "ppVar11 = png_ptr_00;" (assignment_expression "ppVar11 = png_ptr_00" identifier = identifier) ;) (expression_statement "iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9);" (assignment_expression "iVar2 = (**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9)" identifier = (call_expression "(**(code **)(pcVar17 + 0x2484c))(png_ptr_00,ppVar12,uVar8,uVar9)" (parenthesized_expression "(**(code **)(pcVar17 + 0x2484c))" ( (pointer_expression "**(code **)(pcVar17 + 0x2484c)" * (pointer_expression "*(code **)(pcVar17 + 0x2484c)" * (cast_expression "(code **)(pcVar17 + 0x2484c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x2484c)" ( (binary_expression "pcVar17 + 0x2484c" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,ppVar12,uVar8,uVar9)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "ppVar14 = ppVar12;" (assignment_expression "ppVar14 = ppVar12" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        png_ptr_00->mode = png_ptr_00->mode | 0x10000;\n      }" { (expression_statement "png_ptr_00->mode = png_ptr_00->mode | 0x10000;" (assignment_expression "png_ptr_00->mode = png_ptr_00->mode | 0x10000" (field_expression "png_ptr_00->mode" identifier -> field_identifier) = (binary_expression "png_ptr_00->mode | 0x10000" (field_expression "png_ptr_00->mode" identifier -> field_identifier) | number_literal)) ;) })) }) (else_clause "else {\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }" else (compound_statement "{\n      (**(code **)(pcVar17 + 0x24914))();\n      png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);\n      ppVar11 = png_ptr_00;\n    }" { (expression_statement "(**(code **)(pcVar17 + 0x24914))();" (call_expression "(**(code **)(pcVar17 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x24914))" ( (pointer_expression "**(code **)(pcVar17 + 0x24914)" * (pointer_expression "*(code **)(pcVar17 + 0x24914)" * (cast_expression "(code **)(pcVar17 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x24914)" ( (binary_expression "pcVar17 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);" (call_expression "png_crc_finish(png_ptr_00,(png_uint_32)ppVar14)" identifier (argument_list "(png_ptr_00,(png_uint_32)ppVar14)" ( identifier , (cast_expression "(png_uint_32)ppVar14" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) ))) ;) (expression_statement "ppVar11 = png_ptr_00;" (assignment_expression "ppVar11 = png_ptr_00" identifier = identifier) ;) }))))) (goto_statement "goto LAB_00031bc4;" goto statement_identifier ;) })))) (expression_statement "(**(code **)(pcVar17 + 0x24914))();" (call_expression "(**(code **)(pcVar17 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x24914))" ( (pointer_expression "**(code **)(pcVar17 + 0x24914)" * (pointer_expression "*(code **)(pcVar17 + 0x24914)" * (cast_expression "(code **)(pcVar17 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x24914)" ( (binary_expression "pcVar17 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "png_crc_finish(png_ptr_00,(png_uint_32)ppVar14);" (call_expression "png_crc_finish(png_ptr_00,(png_uint_32)ppVar14)" identifier (argument_list "(png_ptr_00,(png_uint_32)ppVar14)" ( identifier , (cast_expression "(png_uint_32)ppVar14" ( (type_descriptor "png_uint_32" type_identifier) ) identifier) ))) ;) (expression_statement "ppVar11 = png_ptr_00;" (assignment_expression "ppVar11 = png_ptr_00" identifier = identifier) ;) (labeled_statement "LAB_00031bc4:\n  if (iStackY_ec == **(int **)(pcVar17 + 0x24990)) {\n    return;\n  }" statement_identifier : (if_statement "if (iStackY_ec == **(int **)(pcVar17 + 0x24990)) {\n    return;\n  }" if (parenthesized_expression "(iStackY_ec == **(int **)(pcVar17 + 0x24990))" ( (binary_expression "iStackY_ec == **(int **)(pcVar17 + 0x24990)" identifier == (pointer_expression "**(int **)(pcVar17 + 0x24990)" * (pointer_expression "*(int **)(pcVar17 + 0x24990)" * (cast_expression "(int **)(pcVar17 + 0x24990)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x24990)" ( (binary_expression "pcVar17 + 0x24990" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "(**(code **)(pcVar17 + 0x24958))();" (call_expression "(**(code **)(pcVar17 + 0x24958))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x24958))" ( (pointer_expression "**(code **)(pcVar17 + 0x24958)" * (pointer_expression "*(code **)(pcVar17 + 0x24958)" * (cast_expression "(code **)(pcVar17 + 0x24958)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x24958)" ( (binary_expression "pcVar17 + 0x24958" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if (((uint)ppVar14->text & 0x60000) == 0x20000) {\n    ppVar11->apng_flags = ppVar11->apng_flags | 1;\n    ppVar14[10].compression = ppVar14[10].compression + 1;\n    return;\n  }" if (parenthesized_expression "(((uint)ppVar14->text & 0x60000) == 0x20000)" ( (binary_expression "((uint)ppVar14->text & 0x60000) == 0x20000" (parenthesized_expression "((uint)ppVar14->text & 0x60000)" ( (binary_expression "(uint)ppVar14->text & 0x60000" (cast_expression "(uint)ppVar14->text" ( (type_descriptor "uint" type_identifier) ) (field_expression "ppVar14->text" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n    ppVar11->apng_flags = ppVar11->apng_flags | 1;\n    ppVar14[10].compression = ppVar14[10].compression + 1;\n    return;\n  }" { (expression_statement "ppVar11->apng_flags = ppVar11->apng_flags | 1;" (assignment_expression "ppVar11->apng_flags = ppVar11->apng_flags | 1" (field_expression "ppVar11->apng_flags" identifier -> field_identifier) = (binary_expression "ppVar11->apng_flags | 1" (field_expression "ppVar11->apng_flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "ppVar14[10].compression = ppVar14[10].compression + 1;" (assignment_expression "ppVar14[10].compression = ppVar14[10].compression + 1" (field_expression "ppVar14[10].compression" (subscript_expression "ppVar14[10]" identifier [ number_literal ]) . field_identifier) = (binary_expression "ppVar14[10].compression + 1" (field_expression "ppVar14[10].compression" (subscript_expression "ppVar14[10]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000313ac(int param_1,undefined4 param_2,char *param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  char *pcVar11;\n  char *unaff_s0;\n  char *unaff_s1;\n  undefined4 unaff_s5;\n  char *pcVar12;\n  char *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  undefined1 auStack_f4 [4];\n  undefined1 auStack_f0 [4];\n  int iStack_ec;\n  char *pcStack_e8;\n  char *pcStack_e4;\n  char *pcStack_e0;\n  code *pcStack_dc;\n  undefined4 uStack_c8;\n  undefined *puStack_c0;\n  int iStack_b4;\n  undefined4 uStack_b0;\n  char *pcStack_ac;\n  char *pcStack_a8;\n  undefined4 uStack_a4;\n  int iStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  int iStack_94;\n  char *pcStack_8c;\n  char *pcStack_88;\n  char *pcStack_84;\n  int iStack_80;\n  undefined4 uStack_7c;\n  undefined4 uStack_78;\n  int local_44;\n  char local_40 [4];\n  int local_3c;\n  char *local_38;\n  int local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_000564c0;\n  iVar2 = *(int *)(param_1 + 0x354);\n  iVar4 = param_1;\n  pcVar10 = param_3;\n  if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\nLAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar14 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  puStack_c0 = puVar14 + 0x2c90c;\n  iStack_94 = **(int **)(puVar14 + 0x24ddc);\n  iVar2 = *(int *)(iVar4 + 0x354);\n  pcVar11 = pcVar10;\n  pcStack_8c = unaff_s0;\n  pcStack_88 = unaff_s1;\n  pcStack_84 = param_3;\n  iStack_80 = param_1;\n  uStack_7c = param_2;\n  uStack_78 = unaff_s5;\n  if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }\n  pcVar15 = *(code **)(puStack_c0 + -0x7b68);\n  pcVar16 = FUN_00031b30;\n  (*pcVar15)();\n  iStack_ec = **(int **)(pcVar15 + 0x24990);\n  uVar3 = *(uint *)(iVar2 + 0x124);\n  pcStack_e8 = unaff_s0;\n  pcStack_e4 = pcVar10;\n  pcStack_e0 = param_3;\n  pcStack_dc = pcVar16;\n  if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar15 + 0x24914))();\n  FUN_0002d154();\n  iVar4 = iVar2;\nLAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar15 + 0x24958))();\n  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_000313ac(int param_1,undefined4 param_2,char *param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  char *pcVar11;\n  char *unaff_s0;\n  char *unaff_s1;\n  undefined4 unaff_s5;\n  char *pcVar12;\n  char *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  undefined1 auStack_f4 [4];\n  undefined1 auStack_f0 [4];\n  int iStack_ec;\n  char *pcStack_e8;\n  char *pcStack_e4;\n  char *pcStack_e0;\n  code *pcStack_dc;\n  undefined4 uStack_c8;\n  undefined *puStack_c0;\n  int iStack_b4;\n  undefined4 uStack_b0;\n  char *pcStack_ac;\n  char *pcStack_a8;\n  undefined4 uStack_a4;\n  int iStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  int iStack_94;\n  char *pcStack_8c;\n  char *pcStack_88;\n  char *pcStack_84;\n  int iStack_80;\n  undefined4 uStack_7c;\n  undefined4 uStack_78;\n  int local_44;\n  char local_40 [4];\n  int local_3c;\n  char *local_38;\n  int local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_000564c0;\n  iVar2 = *(int *)(param_1 + 0x354);\n  iVar4 = param_1;\n  pcVar10 = param_3;\n  if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\nLAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar14 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  puStack_c0 = puVar14 + 0x2c90c;\n  iStack_94 = **(int **)(puVar14 + 0x24ddc);\n  iVar2 = *(int *)(iVar4 + 0x354);\n  pcVar11 = pcVar10;\n  pcStack_8c = unaff_s0;\n  pcStack_88 = unaff_s1;\n  pcStack_84 = param_3;\n  iStack_80 = param_1;\n  uStack_7c = param_2;\n  uStack_78 = unaff_s5;\n  if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }\n  pcVar15 = *(code **)(puStack_c0 + -0x7b68);\n  pcVar16 = FUN_00031b30;\n  (*pcVar15)();\n  iStack_ec = **(int **)(pcVar15 + 0x24990);\n  uVar3 = *(uint *)(iVar2 + 0x124);\n  pcStack_e8 = unaff_s0;\n  pcStack_e4 = pcVar10;\n  pcStack_e0 = param_3;\n  pcStack_dc = pcVar16;\n  if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar15 + 0x24914))();\n  FUN_0002d154();\n  iVar4 = iVar2;\nLAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar15 + 0x24958))();\n  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000313ac(int param_1,undefined4 param_2,char *param_3)" identifier (parameter_list "(int param_1,undefined4 param_2,char *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  char *pcVar11;\n  char *unaff_s0;\n  char *unaff_s1;\n  undefined4 unaff_s5;\n  char *pcVar12;\n  char *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  undefined1 auStack_f4 [4];\n  undefined1 auStack_f0 [4];\n  int iStack_ec;\n  char *pcStack_e8;\n  char *pcStack_e4;\n  char *pcStack_e0;\n  code *pcStack_dc;\n  undefined4 uStack_c8;\n  undefined *puStack_c0;\n  int iStack_b4;\n  undefined4 uStack_b0;\n  char *pcStack_ac;\n  char *pcStack_a8;\n  undefined4 uStack_a4;\n  int iStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  int iStack_94;\n  char *pcStack_8c;\n  char *pcStack_88;\n  char *pcStack_84;\n  int iStack_80;\n  undefined4 uStack_7c;\n  undefined4 uStack_78;\n  int local_44;\n  char local_40 [4];\n  int local_3c;\n  char *local_38;\n  int local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_000564c0;\n  iVar2 = *(int *)(param_1 + 0x354);\n  iVar4 = param_1;\n  pcVar10 = param_3;\n  if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\nLAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar14 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  puStack_c0 = puVar14 + 0x2c90c;\n  iStack_94 = **(int **)(puVar14 + 0x24ddc);\n  iVar2 = *(int *)(iVar4 + 0x354);\n  pcVar11 = pcVar10;\n  pcStack_8c = unaff_s0;\n  pcStack_88 = unaff_s1;\n  pcStack_84 = param_3;\n  iStack_80 = param_1;\n  uStack_7c = param_2;\n  uStack_78 = unaff_s5;\n  if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }\n  pcVar15 = *(code **)(puStack_c0 + -0x7b68);\n  pcVar16 = FUN_00031b30;\n  (*pcVar15)();\n  iStack_ec = **(int **)(pcVar15 + 0x24990);\n  uVar3 = *(uint *)(iVar2 + 0x124);\n  pcStack_e8 = unaff_s0;\n  pcStack_e4 = pcVar10;\n  pcStack_e0 = param_3;\n  pcStack_dc = pcVar16;\n  if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar15 + 0x24914))();\n  FUN_0002d154();\n  iVar4 = iVar2;\nLAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar15 + 0x24958))();\n  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "char *unaff_s0;" primitive_type (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "char *unaff_s1;" primitive_type (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "undefined1 auStack_f4 [4];" type_identifier (array_declarator "auStack_f4 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_f0 [4];" type_identifier (array_declarator "auStack_f0 [4]" identifier [ number_literal ]) ;) (declaration "int iStack_ec;" primitive_type identifier ;) (declaration "char *pcStack_e8;" primitive_type (pointer_declarator "*pcStack_e8" * identifier) ;) (declaration "char *pcStack_e4;" primitive_type (pointer_declarator "*pcStack_e4" * identifier) ;) (declaration "char *pcStack_e0;" primitive_type (pointer_declarator "*pcStack_e0" * identifier) ;) (declaration "code *pcStack_dc;" type_identifier (pointer_declarator "*pcStack_dc" * identifier) ;) (declaration "undefined4 uStack_c8;" type_identifier identifier ;) (declaration "undefined *puStack_c0;" type_identifier (pointer_declarator "*puStack_c0" * identifier) ;) (declaration "int iStack_b4;" primitive_type identifier ;) (declaration "undefined4 uStack_b0;" type_identifier identifier ;) (declaration "char *pcStack_ac;" primitive_type (pointer_declarator "*pcStack_ac" * identifier) ;) (declaration "char *pcStack_a8;" primitive_type (pointer_declarator "*pcStack_a8" * identifier) ;) (declaration "undefined4 uStack_a4;" type_identifier identifier ;) (declaration "int iStack_a0;" primitive_type identifier ;) (declaration "char *pcStack_9c;" primitive_type (pointer_declarator "*pcStack_9c" * identifier) ;) (declaration "char *pcStack_98;" primitive_type (pointer_declarator "*pcStack_98" * identifier) ;) (declaration "int iStack_94;" primitive_type identifier ;) (declaration "char *pcStack_8c;" primitive_type (pointer_declarator "*pcStack_8c" * identifier) ;) (declaration "char *pcStack_88;" primitive_type (pointer_declarator "*pcStack_88" * identifier) ;) (declaration "char *pcStack_84;" primitive_type (pointer_declarator "*pcStack_84" * identifier) ;) (declaration "int iStack_80;" primitive_type identifier ;) (declaration "undefined4 uStack_7c;" type_identifier identifier ;) (declaration "undefined4 uStack_78;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "char local_40 [4];" primitive_type (array_declarator "local_40 [4]" identifier [ number_literal ]) ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_000564c0;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_000564c0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000564c0" * (cast_expression "(int *)PTR___stack_chk_guard_000564c0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x354);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x354)" identifier = (pointer_expression "*(int *)(param_1 + 0x354)" * (cast_expression "(int *)(param_1 + 0x354)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x354)" ( (binary_expression "param_1 + 0x354" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" identifier = identifier) ;) (expression_statement "pcVar10 = param_3;" (assignment_expression "pcVar10 = param_3" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" { (labeled_statement "LAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0x124);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x124)" identifier = (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" if (parenthesized_expression "((uVar3 & 1) == 0)" ( (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }" { (expression_statement "(*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);" (call_expression "(*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c)" (parenthesized_expression "(*(code *)PTR_png_chunk_error_00056520)" ( (pointer_expression "*(code *)PTR_png_chunk_error_00056520" * (cast_expression "(code *)PTR_png_chunk_error_00056520" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_LAB_0005601c + 0x376c)" ( identifier , (binary_expression "PTR_LAB_0005601c + 0x376c" identifier + number_literal) ))) ;) }) (else_clause "else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" else (compound_statement "{\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" { (expression_statement "pcVar10 = (char *)0x2;" (assignment_expression "pcVar10 = (char *)0x2" identifier = (cast_expression "(char *)0x2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }" { (expression_statement "*(uint *)(param_1 + 0x124) = uVar3 | 8;" (assignment_expression "*(uint *)(param_1 + 0x124) = uVar3 | 8" (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))) = (binary_expression "uVar3 | 8" identifier | number_literal)) ;) })) (expression_statement "unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);" (assignment_expression "unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3)" identifier = (cast_expression "(char *)FUN_0002ccbc(param_1,param_3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002ccbc(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))))) ;) (if_statement "if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }" if (parenthesized_expression "(unaff_s1 != (char *)0x0)" ( (binary_expression "unaff_s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }" { (expression_statement "pcVar10 = param_3;" (assignment_expression "pcVar10 = param_3" identifier = identifier) ;) (expression_statement "FUN_0002cfe0(param_1,unaff_s1);" (call_expression "FUN_0002cfe0(param_1,unaff_s1)" identifier (argument_list "(param_1,unaff_s1)" ( identifier , identifier ))) ;) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar2 = FUN_0002d154(param_1,0);" (assignment_expression "iVar2 = FUN_0002d154(param_1,0)" identifier = (call_expression "FUN_0002d154(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }" { (if_statement "if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" if (parenthesized_expression "(param_3 == (char *)0x0)" ( (binary_expression "param_3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" identifier = (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal)) ;) }) (else_clause "else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" else (if_statement "if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" if (parenthesized_expression "(*unaff_s1 == '\0')" ( (binary_expression "*unaff_s1 == '\0'" (pointer_expression "*unaff_s1" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" identifier = (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal)) ;) }) (else_clause "else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" else (compound_statement "{\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" { (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (for_statement "for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }" for ( (assignment_expression "unaff_s0 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (parenthesized_expression "(param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'))" ( (binary_expression "param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0')" (binary_expression "param_3 != unaff_s0" identifier != identifier) && (parenthesized_expression "(unaff_s1[(int)unaff_s0] != '\0')" ( (binary_expression "unaff_s1[(int)unaff_s0] != '\0'" (subscript_expression "unaff_s1[(int)unaff_s0]" identifier [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ; (assignment_expression "unaff_s0 = unaff_s0 + 1" identifier = (binary_expression "unaff_s0 + 1" identifier + number_literal)) ) (compound_statement "{\n              pcVar8 = unaff_s0;\n            }" { (expression_statement "pcVar8 = unaff_s0;" (assignment_expression "pcVar8 = unaff_s0" identifier = identifier) ;) })) (if_statement "if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" if (parenthesized_expression "(pcVar8 < (char *)0x4f)" ( (binary_expression "pcVar8 < (char *)0x4f" identifier < (cast_expression "(char *)0x4f" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }" { (if_statement "if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" if (parenthesized_expression "(param_3 < pcVar8 + 4)" ( (binary_expression "param_3 < pcVar8 + 4" identifier < (binary_expression "pcVar8 + 4" identifier + number_literal)) )) (compound_statement "{\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x47fc;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x47fc" identifier = (binary_expression "PTR_LAB_0005601c + 0x47fc" identifier + number_literal)) ;) }) (else_clause "else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" else (compound_statement "{\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" { (expression_statement "unaff_s1 = unaff_s1 + (int)pcVar8;" (assignment_expression "unaff_s1 = unaff_s1 + (int)pcVar8" identifier = (binary_expression "unaff_s1 + (int)pcVar8" identifier + (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" if (parenthesized_expression "(unaff_s1[2] == '\0')" ( (binary_expression "unaff_s1[2] == '\0'" (subscript_expression "unaff_s1[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }" { (expression_statement "local_44 = -1;" (assignment_expression "local_44 = -1" identifier = number_literal) ;) (expression_statement "unaff_s1 = pcVar8 + 3;" (assignment_expression "unaff_s1 = pcVar8 + 3" identifier = (binary_expression "pcVar8 + 3" identifier + number_literal)) ;) (expression_statement "unaff_s5 = 1;" (assignment_expression "unaff_s5 = 1" identifier = number_literal) ;) (expression_statement "pcVar10 = unaff_s1;" (assignment_expression "pcVar10 = unaff_s1" identifier = identifier) ;) (expression_statement "iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);" (assignment_expression "iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44)" identifier = (call_expression "FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44)" identifier (argument_list "(param_1,param_3,unaff_s1,&local_44)" ( identifier , identifier , identifier , (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (compound_statement "{\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }" { (expression_statement "iVar2 = *(int *)(param_1 + 0x374);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x374)" identifier = (pointer_expression "*(int *)(param_1 + 0x374)" * (cast_expression "(int *)(param_1 + 0x374)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x374)" ( (binary_expression "param_1 + 0x374" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3a04;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3a04" identifier = (binary_expression "PTR_LAB_0005601c + 0x3a04" identifier + number_literal)) ;) }) (else_clause "else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" else (compound_statement "{\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" { (expression_statement "unaff_s0[local_44 + iVar2 + 2] = '\0';" (assignment_expression "unaff_s0[local_44 + iVar2 + 2] = '\0'" (subscript_expression "unaff_s0[local_44 + iVar2 + 2]" identifier [ (binary_expression "local_44 + iVar2 + 2" (binary_expression "local_44 + iVar2" identifier + identifier) + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_40[0] = '\0';" (assignment_expression "local_40[0] = '\0'" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_40[1] = '\0';" (assignment_expression "local_40[1] = '\0'" (subscript_expression "local_40[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_40[2] = '\0';" (assignment_expression "local_40[2] = '\0'" (subscript_expression "local_40[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_40[3] = '\0';" (assignment_expression "local_40[3] = '\0'" (subscript_expression "local_40[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_38 = unaff_s1 + iVar2;" (assignment_expression "local_38 = unaff_s1 + iVar2" identifier = (binary_expression "unaff_s1 + iVar2" identifier + identifier)) ;) (expression_statement "local_34 = local_44;" (assignment_expression "local_34 = local_44" identifier = identifier) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "pcVar10 = local_40;" (assignment_expression "pcVar10 = local_40" identifier = identifier) ;) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" identifier = identifier) ;) (expression_statement "local_3c = iVar2;" (assignment_expression "local_3c = iVar2" identifier = identifier) ;) (expression_statement "iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);" (assignment_expression "iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1)" identifier = (call_expression "FUN_00035a1c(param_1,param_2,pcVar10,1)" identifier (argument_list "(param_1,param_2,pcVar10,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "pcVar8 = PTR_LAB_0005601c;" (assignment_expression "pcVar8 = PTR_LAB_0005601c" identifier = identifier) ;) (if_statement "if (iVar2 == 0) goto LAB_0003169c;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;)) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x1084;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x1084" identifier = (binary_expression "PTR_LAB_0005601c + 0x1084" identifier + number_literal)) ;) }))) }) (else_clause "else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" else (compound_statement "{\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" { (expression_statement "pcVar8 = *(char **)(param_1 + 0x14c);" (assignment_expression "pcVar8 = *(char **)(param_1 + 0x14c)" identifier = (pointer_expression "*(char **)(param_1 + 0x14c)" * (cast_expression "(char **)(param_1 + 0x14c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14c)" ( (binary_expression "param_1 + 0x14c" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" identifier = identifier) ;) (if_statement "if (pcVar8 == (char *)0x0) goto LAB_0003169c;" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;)) }))) }) (else_clause "else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" else (compound_statement "{\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3a24;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3a24" identifier = (binary_expression "PTR_LAB_0005601c + 0x3a24" identifier + number_literal)) ;) }))) }))) }) (else_clause "else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" else (compound_statement "{\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" { (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" identifier = (binary_expression "PTR_LAB_0005601c + 0x3810" identifier + number_literal)) ;) }))) }))))) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,pcVar8)" ( identifier , identifier ))) ;) })) (goto_statement "goto LAB_0003169c;" goto statement_identifier ;) })) }))) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x2f14;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x2f14" identifier = (binary_expression "PTR_LAB_0005601c + 0x2f14" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,pcVar8)" ( identifier , identifier ))) ;) }) (else_clause "else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" else (if_statement "if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }" { (expression_statement "pcVar8 = param_3;" (assignment_expression "pcVar8 = param_3" identifier = identifier) ;) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" else (compound_statement "{\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" { (expression_statement "*(int *)(param_1 + 0x354) = iVar2 + -1;" (assignment_expression "*(int *)(param_1 + 0x354) = iVar2 + -1" (pointer_expression "*(int *)(param_1 + 0x354)" * (cast_expression "(int *)(param_1 + 0x354)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x354)" ( (binary_expression "param_1 + 0x354" identifier + number_literal) )))) = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (if_statement "if (iVar2 + -1 != 1) goto LAB_00031414;" if (parenthesized_expression "(iVar2 + -1 != 1)" ( (binary_expression "iVar2 + -1 != 1" (binary_expression "iVar2 + -1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00031414;" goto statement_identifier ;)) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x39c0;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x39c0" identifier = (binary_expression "PTR_LAB_0005601c + 0x39c0" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" ( (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" * (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,pcVar8)" ( identifier , identifier ))) ;) }))))) (labeled_statement "LAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }" statement_identifier : (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }" if (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_000564c0)" ( (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_000564c0" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000564c0" * (cast_expression "(int *)PTR___stack_chk_guard_000564c0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "puVar14 = PTR___stack_chk_fail_00056488;" (assignment_expression "puVar14 = PTR___stack_chk_fail_00056488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00056488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00056488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00056488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00056488" * (cast_expression "(code *)PTR___stack_chk_fail_00056488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_c0 = puVar14 + 0x2c90c;" (assignment_expression "puStack_c0 = puVar14 + 0x2c90c" identifier = (binary_expression "puVar14 + 0x2c90c" identifier + number_literal)) ;) (expression_statement "iStack_94 = **(int **)(puVar14 + 0x24ddc);" (assignment_expression "iStack_94 = **(int **)(puVar14 + 0x24ddc)" identifier = (pointer_expression "**(int **)(puVar14 + 0x24ddc)" * (pointer_expression "*(int **)(puVar14 + 0x24ddc)" * (cast_expression "(int **)(puVar14 + 0x24ddc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x24ddc)" ( (binary_expression "puVar14 + 0x24ddc" identifier + number_literal) )))))) ;) (expression_statement "iVar2 = *(int *)(iVar4 + 0x354);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x354)" identifier = (pointer_expression "*(int *)(iVar4 + 0x354)" * (cast_expression "(int *)(iVar4 + 0x354)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x354)" ( (binary_expression "iVar4 + 0x354" identifier + number_literal) ))))) ;) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) (expression_statement "pcStack_8c = unaff_s0;" (assignment_expression "pcStack_8c = unaff_s0" identifier = identifier) ;) (expression_statement "pcStack_88 = unaff_s1;" (assignment_expression "pcStack_88 = unaff_s1" identifier = identifier) ;) (expression_statement "pcStack_84 = param_3;" (assignment_expression "pcStack_84 = param_3" identifier = identifier) ;) (expression_statement "iStack_80 = param_1;" (assignment_expression "iStack_80 = param_1" identifier = identifier) ;) (expression_statement "uStack_7c = param_2;" (assignment_expression "uStack_7c = param_2" identifier = identifier) ;) (expression_statement "uStack_78 = unaff_s5;" (assignment_expression "uStack_78 = unaff_s5" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" { (labeled_statement "LAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);" statement_identifier : (expression_statement "uVar3 = *(uint *)(iVar4 + 0x124);" (assignment_expression "uVar3 = *(uint *)(iVar4 + 0x124)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x124)" * (cast_expression "(uint *)(iVar4 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x124)" ( (binary_expression "iVar4 + 0x124" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" if (parenthesized_expression "((uVar3 & 1) == 0)" ( (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }" { (expression_statement "(**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);" (call_expression "(**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c)" (parenthesized_expression "(**(code **)(puVar14 + 0x24e3c))" ( (pointer_expression "**(code **)(puVar14 + 0x24e3c)" * (pointer_expression "*(code **)(puVar14 + 0x24e3c)" * (cast_expression "(code **)(puVar14 + 0x24e3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x24e3c)" ( (binary_expression "puVar14 + 0x24e3c" identifier + number_literal) ))))) )) (argument_list "(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c)" ( identifier , (binary_expression "*(int *)(puVar14 + 0x24938) + 0x376c" (pointer_expression "*(int *)(puVar14 + 0x24938)" * (cast_expression "(int *)(puVar14 + 0x24938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x24938)" ( (binary_expression "puVar14 + 0x24938" identifier + number_literal) )))) + number_literal) ))) ;) }) (else_clause "else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" else (compound_statement "{\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" { (expression_statement "pcVar11 = (char *)0x1;" (assignment_expression "pcVar11 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }" { (expression_statement "*(uint *)(iVar4 + 0x124) = uVar3 | 8;" (assignment_expression "*(uint *)(iVar4 + 0x124) = uVar3 | 8" (pointer_expression "*(uint *)(iVar4 + 0x124)" * (cast_expression "(uint *)(iVar4 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x124)" ( (binary_expression "iVar4 + 0x124" identifier + number_literal) )))) = (binary_expression "uVar3 | 8" identifier | number_literal)) ;) })) (expression_statement "param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);" (assignment_expression "param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1)" identifier = (cast_expression "(char *)FUN_0002ccbc(iVar4,pcVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002ccbc(iVar4,pcVar10 + 1)" identifier (argument_list "(iVar4,pcVar10 + 1)" ( identifier , (binary_expression "pcVar10 + 1" identifier + number_literal) ))))) ;) (if_statement "if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }" if (parenthesized_expression "(param_3 != (char *)0x0)" ( (binary_expression "param_3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }" { (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) (expression_statement "FUN_0002cfe0(iVar4,param_3);" (call_expression "FUN_0002cfe0(iVar4,param_3)" identifier (argument_list "(iVar4,param_3)" ( identifier , identifier ))) ;) (expression_statement "pcVar9 = (char *)0x0;" (assignment_expression "pcVar9 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (expression_statement "iVar5 = FUN_0002d154();" (assignment_expression "iVar5 = FUN_0002d154()" identifier = (call_expression "FUN_0002d154()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) goto LAB_00031ad0;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;)) (if_statement "if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (labeled_statement "LAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);" statement_identifier : (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b50);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b50)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" * (cast_expression "(code **)(puStack_c0 + -0x7b50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b50)" ( (binary_expression "puStack_c0 + -0x7b50" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" else (compound_statement "{\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" { (if_statement "if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(*param_3 == '\0')" ( (binary_expression "*param_3 == '\0'" (pointer_expression "*param_3" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "pcVar9 = (char *)0x1;" (assignment_expression "pcVar9 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar12 = (char *)0x0;" (assignment_expression "pcVar12 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }" while (parenthesized_expression "((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')))" ( (parenthesized_expression "(pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))" ( (comma_expression "pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')" (assignment_expression "pcVar13 = pcVar9" identifier = identifier) , (binary_expression "pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')" (binary_expression "pcVar10 != pcVar13" identifier != identifier) && (parenthesized_expression "(param_3[(int)pcVar13] != '\0')" ( (binary_expression "param_3[(int)pcVar13] != '\0'" (subscript_expression "param_3[(int)pcVar13]" identifier [ (cast_expression "(int)pcVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) )))) )) )) (compound_statement "{\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }" { (expression_statement "pcVar12 = pcVar13;" (assignment_expression "pcVar12 = pcVar13" identifier = identifier) ;) (expression_statement "pcVar9 = pcVar13 + 1;" (assignment_expression "pcVar9 = pcVar13 + 1" identifier = (binary_expression "pcVar13 + 1" identifier + number_literal)) ;) })) (if_statement "if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "((char *)0x4e < pcVar12)" ( (binary_expression "(char *)0x4e < pcVar12" (cast_expression "(char *)0x4e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (if_statement "if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(pcVar10 < pcVar12 + 6)" ( (binary_expression "pcVar10 < pcVar12 + 6" identifier < (binary_expression "pcVar12 + 6" identifier + number_literal)) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "cVar1 = (param_3 + (int)pcVar12)[2];" (assignment_expression "cVar1 = (param_3 + (int)pcVar12)[2]" identifier = (subscript_expression "(param_3 + (int)pcVar12)[2]" (parenthesized_expression "(param_3 + (int)pcVar12)" ( (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ number_literal ])) ;) (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" identifier = (binary_expression "pcVar12 + 4" identifier + number_literal)) ;) (if_statement "if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }" { (if_statement "if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" if (parenthesized_expression "(cVar1 == '\x01')" ( (binary_expression "cVar1 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" { (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" identifier = (binary_expression "pcVar12 + 4" identifier + number_literal)) ;) (if_statement "if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;" if (parenthesized_expression "((param_3 + (int)pcVar12)[3] == '\0')" ( (binary_expression "(param_3 + (int)pcVar12)[3] == '\0'" (subscript_expression "(param_3 + (int)pcVar12)[3]" (parenthesized_expression "(param_3 + (int)pcVar12)" ( (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00031900;" goto statement_identifier ;)) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3a40" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) }) (else_clause "else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" else (compound_statement "{\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3a40" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) }))) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (labeled_statement "LAB_00031900:\n          unaff_s0 = pcVar12 + 4;" statement_identifier : (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" identifier = (binary_expression "pcVar12 + 4" identifier + number_literal)) ;)) (expression_statement "iStack_b4 = 0;" (assignment_expression "iStack_b4 = 0" identifier = number_literal) ;) (expression_statement "pcVar9 = unaff_s0;" (assignment_expression "pcVar9 = unaff_s0" identifier = identifier) ;) (if_statement "if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }" if (parenthesized_expression "((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0'))" ( (binary_expression "(unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')" (parenthesized_expression "(unaff_s0 < pcVar10)" ( (binary_expression "unaff_s0 < pcVar10" identifier < identifier) )) && (parenthesized_expression "(param_3[(int)unaff_s0] != '\0')" ( (binary_expression "param_3[(int)unaff_s0] != '\0'" (subscript_expression "param_3[(int)unaff_s0]" identifier [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }" { (expression_statement "pcVar12 = pcVar12 + 5;" (assignment_expression "pcVar12 = pcVar12 + 5" identifier = (binary_expression "pcVar12 + 5" identifier + number_literal)) ;) (do_statement "do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');" do (compound_statement "{\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            }" { (expression_statement "pcVar9 = pcVar12;" (assignment_expression "pcVar9 = pcVar12" identifier = identifier) ;) (if_statement "if (pcVar10 == pcVar9) break;" if (parenthesized_expression "(pcVar10 == pcVar9)" ( (binary_expression "pcVar10 == pcVar9" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pcVar12 = pcVar9 + 1;" (assignment_expression "pcVar12 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3[(int)pcVar9] != '\0')" ( (binary_expression "param_3[(int)pcVar9] != '\0'" (subscript_expression "param_3[(int)pcVar9]" identifier [ (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "pcVar13 = pcVar9 + 1;" (assignment_expression "pcVar13 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (expression_statement "pcVar12 = pcVar13;" (assignment_expression "pcVar12 = pcVar13" identifier = identifier) ;) (if_statement "if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }" if (parenthesized_expression "((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0'))" ( (binary_expression "(pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')" (parenthesized_expression "(pcVar13 < pcVar10)" ( (binary_expression "pcVar13 < pcVar10" identifier < identifier) )) && (parenthesized_expression "(param_3[(int)pcVar13] != '\0')" ( (binary_expression "param_3[(int)pcVar13] != '\0'" (subscript_expression "param_3[(int)pcVar13]" identifier [ (cast_expression "(int)pcVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }" { (expression_statement "pcVar9 = pcVar9 + 2;" (assignment_expression "pcVar9 = pcVar9 + 2" identifier = (binary_expression "pcVar9 + 2" identifier + number_literal)) ;) (do_statement "do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');" do (compound_statement "{\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            }" { (expression_statement "pcVar12 = pcVar9;" (assignment_expression "pcVar12 = pcVar9" identifier = identifier) ;) (if_statement "if (pcVar10 <= pcVar12) break;" if (parenthesized_expression "(pcVar10 <= pcVar12)" ( (binary_expression "pcVar10 <= pcVar12" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "pcVar9 = pcVar12 + 1;" (assignment_expression "pcVar9 = pcVar12 + 1" identifier = (binary_expression "pcVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3[(int)pcVar12] != '\0')" ( (binary_expression "param_3[(int)pcVar12] != '\0'" (subscript_expression "param_3[(int)pcVar12]" identifier [ (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "pcVar12 = pcVar12 + 1;" (assignment_expression "pcVar12 = pcVar12 + 1" identifier = (binary_expression "pcVar12 + 1" identifier + number_literal)) ;) (if_statement "if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (if_statement "if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }" if (parenthesized_expression "(pcVar12 <= pcVar10)" ( (binary_expression "pcVar12 <= pcVar10" identifier <= identifier) )) (compound_statement "{\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }" { (expression_statement "iStack_b4 = (int)pcVar10 - (int)pcVar12;" (assignment_expression "iStack_b4 = (int)pcVar10 - (int)pcVar12" identifier = (binary_expression "(int)pcVar10 - (int)pcVar12" (cast_expression "(int)pcVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar10 = param_3 + (int)pcVar10;" (assignment_expression "pcVar10 = param_3 + (int)pcVar10" identifier = (binary_expression "param_3 + (int)pcVar10" identifier + (cast_expression "(int)pcVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*pcVar10 = '\0';" (assignment_expression "*pcVar10 = '\0'" (pointer_expression "*pcVar10" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000319a0;" goto statement_identifier ;) })) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (if_statement "if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" if (parenthesized_expression "(pcVar10 <= pcVar12)" ( (binary_expression "pcVar10 <= pcVar12" identifier <= identifier) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;) })) (expression_statement "iStack_b4 = -1;" (assignment_expression "iStack_b4 = -1" identifier = number_literal) ;) (expression_statement "uStack_c8 = 1;" (assignment_expression "uStack_c8 = 1" identifier = number_literal) ;) (expression_statement "pcVar11 = pcVar12;" (assignment_expression "pcVar11 = pcVar12" identifier = identifier) ;) (expression_statement "iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);" (assignment_expression "iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4)" identifier = (call_expression "FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4)" identifier (argument_list "(iVar4,pcVar10,pcVar12,&iStack_b4)" ( identifier , identifier , identifier , (pointer_expression "&iStack_b4" & identifier) )))) ;) (if_statement "if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" { (expression_statement "param_3 = *(char **)(iVar4 + 0x374);" (assignment_expression "param_3 = *(char **)(iVar4 + 0x374)" identifier = (pointer_expression "*(char **)(iVar4 + 0x374)" * (cast_expression "(char **)(iVar4 + 0x374)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x374)" ( (binary_expression "iVar4 + 0x374" identifier + number_literal) ))))) ;) (expression_statement "(param_3 + (int)pcVar12)[iStack_b4] = '\0';" (assignment_expression "(param_3 + (int)pcVar12)[iStack_b4] = '\0'" (subscript_expression "(param_3 + (int)pcVar12)[iStack_b4]" (parenthesized_expression "(param_3 + (int)pcVar12)" ( (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uStack_b0 = 2;" (assignment_expression "uStack_b0 = 2" identifier = number_literal) ;) }) (else_clause "else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" else (compound_statement "{\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" { (expression_statement "pcVar9 = *(char **)(iVar4 + 0x14c);" (assignment_expression "pcVar9 = *(char **)(iVar4 + 0x14c)" identifier = (pointer_expression "*(char **)(iVar4 + 0x14c)" * (cast_expression "(char **)(iVar4 + 0x14c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x14c)" ( (binary_expression "iVar4 + 0x14c" identifier + number_literal) ))))) ;) (if_statement "if (pcVar9 != (char *)0x0) goto LAB_00031abc;" if (parenthesized_expression "(pcVar9 != (char *)0x0)" ( (binary_expression "pcVar9 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00031abc;" goto statement_identifier ;)) (expression_statement "(param_3 + (int)pcVar12)[iStack_b4] = '\0';" (assignment_expression "(param_3 + (int)pcVar12)[iStack_b4] = '\0'" (subscript_expression "(param_3 + (int)pcVar12)[iStack_b4]" (parenthesized_expression "(param_3 + (int)pcVar12)" ( (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uStack_b0 = 2;" (assignment_expression "uStack_b0 = 2" identifier = number_literal) ;) }))) (labeled_statement "LAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;" statement_identifier : (expression_statement "pcStack_9c = param_3 + (int)unaff_s0;" (assignment_expression "pcStack_9c = param_3 + (int)unaff_s0" identifier = (binary_expression "param_3 + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "pcStack_98 = param_3 + (int)pcVar13;" (assignment_expression "pcStack_98 = param_3 + (int)pcVar13" identifier = (binary_expression "param_3 + (int)pcVar13" identifier + (cast_expression "(int)pcVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcStack_a8 = param_3 + (int)pcVar12;" (assignment_expression "pcStack_a8 = param_3 + (int)pcVar12" identifier = (binary_expression "param_3 + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uStack_a4 = 0;" (assignment_expression "uStack_a4 = 0" identifier = number_literal) ;) (expression_statement "iStack_a0 = iStack_b4;" (assignment_expression "iStack_a0 = iStack_b4" identifier = identifier) ;) (expression_statement "pcVar11 = (char *)&uStack_b0;" (assignment_expression "pcVar11 = (char *)&uStack_b0" identifier = (cast_expression "(char *)&uStack_b0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&uStack_b0" & identifier))) ;) (expression_statement "pcStack_ac = param_3;" (assignment_expression "pcStack_ac = param_3" identifier = identifier) ;) (expression_statement "iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);" (assignment_expression "iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1)" identifier = (call_expression "FUN_00035a1c(iVar4,pcVar8,pcVar11,1)" identifier (argument_list "(iVar4,pcVar8,pcVar11,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "pcVar9 = (char *)0x0;" (assignment_expression "pcVar9 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }" { (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x1084" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (if_statement "if (pcVar9 == (char *)0x0) goto LAB_00031ad0;" if (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;)) (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b50);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b50)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" * (cast_expression "(code **)(puStack_c0 + -0x7b50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b50)" ( (binary_expression "puStack_c0 + -0x7b50" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (goto_statement "goto LAB_00031ad0;" goto statement_identifier ;) })) }))) (expression_statement "FUN_0002d154(iVar4,pcVar10);" (call_expression "FUN_0002d154(iVar4,pcVar10)" identifier (argument_list "(iVar4,pcVar10)" ( identifier , identifier ))) ;) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x2f14" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7b50))();" (call_expression "(**(code **)(puStack_c0 + -0x7b50))()" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7b50))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7b50)" * (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" * (cast_expression "(code **)(puStack_c0 + -0x7b50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b50)" ( (binary_expression "puStack_c0 + -0x7b50" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) }) (else_clause "else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" else (if_statement "if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }" { (expression_statement "pcVar9 = pcVar10;" (assignment_expression "pcVar9 = pcVar10" identifier = identifier) ;) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) }) (else_clause "else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" else (compound_statement "{\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" { (expression_statement "*(int *)(iVar4 + 0x354) = iVar2 + -1;" (assignment_expression "*(int *)(iVar4 + 0x354) = iVar2 + -1" (pointer_expression "*(int *)(iVar4 + 0x354)" * (cast_expression "(int *)(iVar4 + 0x354)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x354)" ( (binary_expression "iVar4 + 0x354" identifier + number_literal) )))) = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (if_statement "if (iVar2 + -1 != 1) goto LAB_00031754;" if (parenthesized_expression "(iVar2 + -1 != 1)" ( (binary_expression "iVar2 + -1 != 1" (binary_expression "iVar2 + -1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00031754;" goto statement_identifier ;)) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" identifier = (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" ( (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x39c0" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" * (cast_expression "(int *)(puStack_c0 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fd4)" ( (binary_expression "puStack_c0 + -0x7fd4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7b50))();" (call_expression "(**(code **)(puStack_c0 + -0x7b50))()" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7b50))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7b50)" * (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" * (cast_expression "(code **)(puStack_c0 + -0x7b50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b50)" ( (binary_expression "puStack_c0 + -0x7b50" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) }))))) (labeled_statement "LAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }" if (parenthesized_expression "(iStack_94 == **(int **)(puStack_c0 + -0x7b30))" ( (binary_expression "iStack_94 == **(int **)(puStack_c0 + -0x7b30)" identifier == (pointer_expression "**(int **)(puStack_c0 + -0x7b30)" * (pointer_expression "*(int **)(puStack_c0 + -0x7b30)" * (cast_expression "(int **)(puStack_c0 + -0x7b30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b30)" ( (binary_expression "puStack_c0 + -0x7b30" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b68);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b68)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x7b68)" * (cast_expression "(code **)(puStack_c0 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7b68)" ( (binary_expression "puStack_c0 + -0x7b68" identifier + number_literal) ))))) ;) (expression_statement "pcVar16 = FUN_00031b30;" (assignment_expression "pcVar16 = FUN_00031b30" identifier = identifier) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iStack_ec = **(int **)(pcVar15 + 0x24990);" (assignment_expression "iStack_ec = **(int **)(pcVar15 + 0x24990)" identifier = (pointer_expression "**(int **)(pcVar15 + 0x24990)" * (pointer_expression "*(int **)(pcVar15 + 0x24990)" * (cast_expression "(int **)(pcVar15 + 0x24990)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24990)" ( (binary_expression "pcVar15 + 0x24990" identifier + number_literal) )))))) ;) (expression_statement "uVar3 = *(uint *)(iVar2 + 0x124);" (assignment_expression "uVar3 = *(uint *)(iVar2 + 0x124)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x124)" * (cast_expression "(uint *)(iVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x124)" ( (binary_expression "iVar2 + 0x124" identifier + number_literal) ))))) ;) (expression_statement "pcStack_e8 = unaff_s0;" (assignment_expression "pcStack_e8 = unaff_s0" identifier = identifier) ;) (expression_statement "pcStack_e4 = pcVar10;" (assignment_expression "pcStack_e4 = pcVar10" identifier = identifier) ;) (expression_statement "pcStack_e0 = param_3;" (assignment_expression "pcStack_e0 = param_3" identifier = identifier) ;) (expression_statement "pcStack_dc = pcVar16;" (assignment_expression "pcStack_dc = pcVar16" identifier = identifier) ;) (if_statement "if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" if (parenthesized_expression "((uVar3 & 1) == 0)" ( (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }" { (expression_statement "(**(code **)(pcVar15 + 0x248e0))();" (call_expression "(**(code **)(pcVar15 + 0x248e0))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x248e0))" ( (pointer_expression "**(code **)(pcVar15 + 0x248e0)" * (pointer_expression "*(code **)(pcVar15 + 0x248e0)" * (cast_expression "(code **)(pcVar15 + 0x248e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x248e0)" ( (binary_expression "pcVar15 + 0x248e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) }) (else_clause "else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" else (if_statement "if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" if (parenthesized_expression "((uVar3 & 4) == 0)" ( (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" { (if_statement "if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" if (parenthesized_expression "((int)(uVar3 << 0xf) < 0)" ( (binary_expression "(int)(uVar3 << 0xf) < 0" (cast_expression "(int)(uVar3 << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar3 << 0xf)" ( (binary_expression "uVar3 << 0xf" identifier << number_literal) ))) < number_literal) )) (compound_statement "{\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" { (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" ( (pointer_expression "**(code **)(pcVar15 + 0x24914)" * (pointer_expression "*(code **)(pcVar15 + 0x24914)" * (cast_expression "(code **)(pcVar15 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24914)" ( (binary_expression "pcVar15 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) }) (else_clause "else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" else (if_statement "if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" if (parenthesized_expression "(pcVar11 == (char *)0x8)" ( (binary_expression "pcVar11 == (char *)0x8" identifier == (cast_expression "(char *)0x8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }" { (expression_statement "FUN_0002cfe0();" (call_expression "FUN_0002cfe0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0002d154(iVar2,0);" (call_expression "FUN_0002d154(iVar2,0)" identifier (argument_list "(iVar2,0)" ( identifier , number_literal ))) ;) (expression_statement "uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);" (assignment_expression "uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4)" identifier = (call_expression "(**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4)" (parenthesized_expression "(**(code **)(pcVar15 + 0x24810))" ( (pointer_expression "**(code **)(pcVar15 + 0x24810)" * (pointer_expression "*(code **)(pcVar15 + 0x24810)" * (cast_expression "(code **)(pcVar15 + 0x24810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24810)" ( (binary_expression "pcVar15 + 0x24810" identifier + number_literal) ))))) )) (argument_list "(iVar2,auStack_f4)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);" (assignment_expression "uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0)" identifier = (call_expression "(**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0)" (parenthesized_expression "(**(code **)(pcVar15 + 0x24810))" ( (pointer_expression "**(code **)(pcVar15 + 0x24810)" * (pointer_expression "*(code **)(pcVar15 + 0x24810)" * (cast_expression "(code **)(pcVar15 + 0x24810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24810)" ( (binary_expression "pcVar15 + 0x24810" identifier + number_literal) ))))) )) (argument_list "(iVar2,auStack_f0)" ( identifier , identifier )))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) (expression_statement "iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);" (assignment_expression "iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7)" identifier = (call_expression "(**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7)" (parenthesized_expression "(**(code **)(pcVar15 + 0x2484c))" ( (pointer_expression "**(code **)(pcVar15 + 0x2484c)" * (pointer_expression "*(code **)(pcVar15 + 0x2484c)" * (cast_expression "(code **)(pcVar15 + 0x2484c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x2484c)" ( (binary_expression "pcVar15 + 0x2484c" identifier + number_literal) ))))) )) (argument_list "(iVar2,pcVar9,uVar6,uVar7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "pcVar11 = pcVar9;" (assignment_expression "pcVar11 = pcVar9" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }" { (expression_statement "*(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;" (assignment_expression "*(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000" (pointer_expression "*(uint *)(iVar2 + 0x124)" * (cast_expression "(uint *)(iVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x124)" ( (binary_expression "iVar2 + 0x124" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar2 + 0x124) | 0x10000" (pointer_expression "*(uint *)(iVar2 + 0x124)" * (cast_expression "(uint *)(iVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x124)" ( (binary_expression "iVar2 + 0x124" identifier + number_literal) )))) | number_literal)) ;) })) }) (else_clause "else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" else (compound_statement "{\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" { (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" ( (pointer_expression "**(code **)(pcVar15 + 0x24914)" * (pointer_expression "*(code **)(pcVar15 + 0x24914)" * (cast_expression "(code **)(pcVar15 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24914)" ( (binary_expression "pcVar15 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) }))))) (goto_statement "goto LAB_00031bc4;" goto statement_identifier ;) })))) (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" ( (pointer_expression "**(code **)(pcVar15 + 0x24914)" * (pointer_expression "*(code **)(pcVar15 + 0x24914)" * (cast_expression "(code **)(pcVar15 + 0x24914)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24914)" ( (binary_expression "pcVar15 + 0x24914" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) (labeled_statement "LAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }" if (parenthesized_expression "(iStack_ec == **(int **)(pcVar15 + 0x24990))" ( (binary_expression "iStack_ec == **(int **)(pcVar15 + 0x24990)" identifier == (pointer_expression "**(int **)(pcVar15 + 0x24990)" * (pointer_expression "*(int **)(pcVar15 + 0x24990)" * (cast_expression "(int **)(pcVar15 + 0x24990)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24990)" ( (binary_expression "pcVar15 + 0x24990" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "(**(code **)(pcVar15 + 0x24958))();" (call_expression "(**(code **)(pcVar15 + 0x24958))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24958))" ( (pointer_expression "**(code **)(pcVar15 + 0x24958)" * (pointer_expression "*(code **)(pcVar15 + 0x24958)" * (cast_expression "(code **)(pcVar15 + 0x24958)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x24958)" ( (binary_expression "pcVar15 + 0x24958" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }" if (parenthesized_expression "((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000)" ( (binary_expression "(*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000" (parenthesized_expression "(*(uint *)(pcVar11 + 8) & 0x60000)" ( (binary_expression "*(uint *)(pcVar11 + 8) & 0x60000" (pointer_expression "*(uint *)(pcVar11 + 8)" * (cast_expression "(uint *)(pcVar11 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 8)" ( (binary_expression "pcVar11 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }" { (expression_statement "*(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;" (assignment_expression "*(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1" (pointer_expression "*(uint *)(iVar4 + 0x308)" * (cast_expression "(uint *)(iVar4 + 0x308)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x308)" ( (binary_expression "iVar4 + 0x308" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar4 + 0x308) | 1" (pointer_expression "*(uint *)(iVar4 + 0x308)" * (cast_expression "(uint *)(iVar4 + 0x308)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x308)" ( (binary_expression "iVar4 + 0x308" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;" (assignment_expression "*(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1" (pointer_expression "*(int *)(pcVar11 + 0x118)" * (cast_expression "(int *)(pcVar11 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x118)" ( (binary_expression "pcVar11 + 0x118" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar11 + 0x118) + 1" (pointer_expression "*(int *)(pcVar11 + 0x118)" * (cast_expression "(int *)(pcVar11 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x118)" ( (binary_expression "pcVar11 + 0x118" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) })) (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (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 = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (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 *)) ) LIT)) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) != (char_literal ' escape_sequence ')) ))) )) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT + IDENT) + LIT) ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }))))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) }))))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_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 = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (labeled_statement 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) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT != IDENT) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) != (char_literal ' escape_sequence ')) )))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) != (char_literal ' escape_sequence ')) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) != (char_literal ' escape_sequence ')) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , 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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return ;) }))) (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 = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))))) (goto_statement goto statement_identifier ;) })))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (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) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_000313ac(int param_1,undefined4 param_2,char *param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  char *pcVar11;\n  char *unaff_s0;\n  char *unaff_s1;\n  undefined4 unaff_s5;\n  char *pcVar12;\n  char *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  undefined1 auStack_f4 [4];\n  undefined1 auStack_f0 [4];\n  int iStack_ec;\n  char *pcStack_e8;\n  char *pcStack_e4;\n  char *pcStack_e0;\n  code *pcStack_dc;\n  undefined4 uStack_c8;\n  undefined *puStack_c0;\n  int iStack_b4;\n  undefined4 uStack_b0;\n  char *pcStack_ac;\n  char *pcStack_a8;\n  undefined4 uStack_a4;\n  int iStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  int iStack_94;\n  char *pcStack_8c;\n  char *pcStack_88;\n  char *pcStack_84;\n  int iStack_80;\n  undefined4 uStack_7c;\n  undefined4 uStack_78;\n  int local_44;\n  char local_40 [4];\n  int local_3c;\n  char *local_38;\n  int local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_000564c0;\n  iVar2 = *(int *)(param_1 + 0x354);\n  iVar4 = param_1;\n  pcVar10 = param_3;\n  if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\nLAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar14 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  puStack_c0 = puVar14 + 0x2c90c;\n  iStack_94 = **(int **)(puVar14 + 0x24ddc);\n  iVar2 = *(int *)(iVar4 + 0x354);\n  pcVar11 = pcVar10;\n  pcStack_8c = unaff_s0;\n  pcStack_88 = unaff_s1;\n  pcStack_84 = param_3;\n  iStack_80 = param_1;\n  uStack_7c = param_2;\n  uStack_78 = unaff_s5;\n  if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }\n  pcVar15 = *(code **)(puStack_c0 + -0x7b68);\n  pcVar16 = FUN_00031b30;\n  (*pcVar15)();\n  iStack_ec = **(int **)(pcVar15 + 0x24990);\n  uVar3 = *(uint *)(iVar2 + 0x124);\n  pcStack_e8 = unaff_s0;\n  pcStack_e4 = pcVar10;\n  pcStack_e0 = param_3;\n  pcStack_dc = pcVar16;\n  if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar15 + 0x24914))();\n  FUN_0002d154();\n  iVar4 = iVar2;\nLAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar15 + 0x24958))();\n  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000313ac(int param_1,undefined4 param_2,char *param_3)" (identifier "FUN_000313ac") (parameter_list "(int param_1,undefined4 param_2,char *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  char *pcVar11;\n  char *unaff_s0;\n  char *unaff_s1;\n  undefined4 unaff_s5;\n  char *pcVar12;\n  char *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  undefined1 auStack_f4 [4];\n  undefined1 auStack_f0 [4];\n  int iStack_ec;\n  char *pcStack_e8;\n  char *pcStack_e4;\n  char *pcStack_e0;\n  code *pcStack_dc;\n  undefined4 uStack_c8;\n  undefined *puStack_c0;\n  int iStack_b4;\n  undefined4 uStack_b0;\n  char *pcStack_ac;\n  char *pcStack_a8;\n  undefined4 uStack_a4;\n  int iStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  int iStack_94;\n  char *pcStack_8c;\n  char *pcStack_88;\n  char *pcStack_84;\n  int iStack_80;\n  undefined4 uStack_7c;\n  undefined4 uStack_78;\n  int local_44;\n  char local_40 [4];\n  int local_3c;\n  char *local_38;\n  int local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_000564c0;\n  iVar2 = *(int *)(param_1 + 0x354);\n  iVar4 = param_1;\n  pcVar10 = param_3;\n  if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\nLAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }\n  puVar14 = PTR___stack_chk_fail_00056488;\n  (*(code *)PTR___stack_chk_fail_00056488)();\n  puStack_c0 = puVar14 + 0x2c90c;\n  iStack_94 = **(int **)(puVar14 + 0x24ddc);\n  iVar2 = *(int *)(iVar4 + 0x354);\n  pcVar11 = pcVar10;\n  pcStack_8c = unaff_s0;\n  pcStack_88 = unaff_s1;\n  pcStack_84 = param_3;\n  iStack_80 = param_1;\n  uStack_7c = param_2;\n  uStack_78 = unaff_s5;\n  if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\nLAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }\n  pcVar15 = *(code **)(puStack_c0 + -0x7b68);\n  pcVar16 = FUN_00031b30;\n  (*pcVar15)();\n  iStack_ec = **(int **)(pcVar15 + 0x24990);\n  uVar3 = *(uint *)(iVar2 + 0x124);\n  pcStack_e8 = unaff_s0;\n  pcStack_e4 = pcVar10;\n  pcStack_e0 = param_3;\n  pcStack_dc = pcVar16;\n  if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }\n  (**(code **)(pcVar15 + 0x24914))();\n  FUN_0002d154();\n  iVar4 = iVar2;\nLAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }\n  (**(code **)(pcVar15 + 0x24958))();\n  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "char *pcVar11;" (primitive_type "char") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "char *unaff_s0;" (primitive_type "char") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "char *unaff_s1;" (primitive_type "char") (pointer_declarator "*unaff_s1" (* "*") (identifier "unaff_s1")) (; ";")) (declaration "undefined4 unaff_s5;" (type_identifier "undefined4") (identifier "unaff_s5") (; ";")) (declaration "char *pcVar12;" (primitive_type "char") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "char *pcVar13;" (primitive_type "char") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "undefined *puVar14;" (type_identifier "undefined") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "code *pcVar16;" (type_identifier "code") (pointer_declarator "*pcVar16" (* "*") (identifier "pcVar16")) (; ";")) (declaration "undefined1 auStack_f4 [4];" (type_identifier "undefined1") (array_declarator "auStack_f4 [4]" (identifier "auStack_f4") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 auStack_f0 [4];" (type_identifier "undefined1") (array_declarator "auStack_f0 [4]" (identifier "auStack_f0") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int iStack_ec;" (primitive_type "int") (identifier "iStack_ec") (; ";")) (declaration "char *pcStack_e8;" (primitive_type "char") (pointer_declarator "*pcStack_e8" (* "*") (identifier "pcStack_e8")) (; ";")) (declaration "char *pcStack_e4;" (primitive_type "char") (pointer_declarator "*pcStack_e4" (* "*") (identifier "pcStack_e4")) (; ";")) (declaration "char *pcStack_e0;" (primitive_type "char") (pointer_declarator "*pcStack_e0" (* "*") (identifier "pcStack_e0")) (; ";")) (declaration "code *pcStack_dc;" (type_identifier "code") (pointer_declarator "*pcStack_dc" (* "*") (identifier "pcStack_dc")) (; ";")) (declaration "undefined4 uStack_c8;" (type_identifier "undefined4") (identifier "uStack_c8") (; ";")) (declaration "undefined *puStack_c0;" (type_identifier "undefined") (pointer_declarator "*puStack_c0" (* "*") (identifier "puStack_c0")) (; ";")) (declaration "int iStack_b4;" (primitive_type "int") (identifier "iStack_b4") (; ";")) (declaration "undefined4 uStack_b0;" (type_identifier "undefined4") (identifier "uStack_b0") (; ";")) (declaration "char *pcStack_ac;" (primitive_type "char") (pointer_declarator "*pcStack_ac" (* "*") (identifier "pcStack_ac")) (; ";")) (declaration "char *pcStack_a8;" (primitive_type "char") (pointer_declarator "*pcStack_a8" (* "*") (identifier "pcStack_a8")) (; ";")) (declaration "undefined4 uStack_a4;" (type_identifier "undefined4") (identifier "uStack_a4") (; ";")) (declaration "int iStack_a0;" (primitive_type "int") (identifier "iStack_a0") (; ";")) (declaration "char *pcStack_9c;" (primitive_type "char") (pointer_declarator "*pcStack_9c" (* "*") (identifier "pcStack_9c")) (; ";")) (declaration "char *pcStack_98;" (primitive_type "char") (pointer_declarator "*pcStack_98" (* "*") (identifier "pcStack_98")) (; ";")) (declaration "int iStack_94;" (primitive_type "int") (identifier "iStack_94") (; ";")) (declaration "char *pcStack_8c;" (primitive_type "char") (pointer_declarator "*pcStack_8c" (* "*") (identifier "pcStack_8c")) (; ";")) (declaration "char *pcStack_88;" (primitive_type "char") (pointer_declarator "*pcStack_88" (* "*") (identifier "pcStack_88")) (; ";")) (declaration "char *pcStack_84;" (primitive_type "char") (pointer_declarator "*pcStack_84" (* "*") (identifier "pcStack_84")) (; ";")) (declaration "int iStack_80;" (primitive_type "int") (identifier "iStack_80") (; ";")) (declaration "undefined4 uStack_7c;" (type_identifier "undefined4") (identifier "uStack_7c") (; ";")) (declaration "undefined4 uStack_78;" (type_identifier "undefined4") (identifier "uStack_78") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "char local_40 [4];" (primitive_type "char") (array_declarator "local_40 [4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "char *local_38;" (primitive_type "char") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_000564c0;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_000564c0" (identifier "local_24") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000564c0" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000564c0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000564c0")))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x354);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x354)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x354)" (* "*") (cast_expression "(int *)(param_1 + 0x354)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x354)" (( "(") (binary_expression "param_1 + 0x354" (identifier "param_1") (+ "+") (number_literal "0x354")) () ")"))))) (; ";")) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" (identifier "iVar4") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pcVar10 = param_3;" (assignment_expression "pcVar10 = param_3" (identifier "pcVar10") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar2 == 0) {\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }\n  else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x2f14;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" ({ "{") (labeled_statement "LAB_00031414:\n    uVar3 = *(uint *)(param_1 + 0x124);" (statement_identifier "LAB_00031414") (: ":") (expression_statement "uVar3 = *(uint *)(param_1 + 0x124);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x124)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0x124)" (* "*") (cast_expression "(uint *)(param_1 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")"))))) (; ";"))) (if_statement "if ((uVar3 & 1) == 0) {\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }\n    else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" (if "if") (parenthesized_expression "((uVar3 & 1) == 0)" (( "(") (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" (( "(") (binary_expression "uVar3 & 1" (identifier "uVar3") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);\n    }" ({ "{") (expression_statement "(*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);" (call_expression "(*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c)" (parenthesized_expression "(*(code *)PTR_png_chunk_error_00056520)" (( "(") (pointer_expression "*(code *)PTR_png_chunk_error_00056520" (* "*") (cast_expression "(code *)PTR_png_chunk_error_00056520" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_chunk_error_00056520"))) () ")")) (argument_list "(param_1,PTR_LAB_0005601c + 0x376c)" (( "(") (identifier "param_1") (, ",") (binary_expression "PTR_LAB_0005601c + 0x376c" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x376c")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" (else "else") (compound_statement "{\n      pcVar10 = (char *)0x2;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }\n      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);\n      if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }\n    }" ({ "{") (expression_statement "pcVar10 = (char *)0x2;" (assignment_expression "pcVar10 = (char *)0x2" (identifier "pcVar10") (= "=") (cast_expression "(char *)0x2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (if_statement "if ((uVar3 & 4) != 0) {\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }" (if "if") (parenthesized_expression "((uVar3 & 4) != 0)" (( "(") (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" (( "(") (binary_expression "uVar3 & 4" (identifier "uVar3") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(uint *)(param_1 + 0x124) = uVar3 | 8;\n      }" ({ "{") (expression_statement "*(uint *)(param_1 + 0x124) = uVar3 | 8;" (assignment_expression "*(uint *)(param_1 + 0x124) = uVar3 | 8" (pointer_expression "*(uint *)(param_1 + 0x124)" (* "*") (cast_expression "(uint *)(param_1 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")")))) (= "=") (binary_expression "uVar3 | 8" (identifier "uVar3") (| "|") (number_literal "8"))) (; ";")) (} "}"))) (expression_statement "unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);" (assignment_expression "unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3)" (identifier "unaff_s1") (= "=") (cast_expression "(char *)FUN_0002ccbc(param_1,param_3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002ccbc(param_1,param_3)" (identifier "FUN_0002ccbc") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))))) (; ";")) (if_statement "if (unaff_s1 != (char *)0x0) {\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }" (if "if") (parenthesized_expression "(unaff_s1 != (char *)0x0)" (( "(") (binary_expression "unaff_s1 != (char *)0x0" (identifier "unaff_s1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pcVar10 = param_3;\n        FUN_0002cfe0(param_1,unaff_s1);\n        pcVar8 = (char *)0x0;\n        iVar2 = FUN_0002d154(param_1,0);\n        if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }\n        goto LAB_0003169c;\n      }" ({ "{") (expression_statement "pcVar10 = param_3;" (assignment_expression "pcVar10 = param_3" (identifier "pcVar10") (= "=") (identifier "param_3")) (; ";")) (expression_statement "FUN_0002cfe0(param_1,unaff_s1);" (call_expression "FUN_0002cfe0(param_1,unaff_s1)" (identifier "FUN_0002cfe0") (argument_list "(param_1,unaff_s1)" (( "(") (identifier "param_1") (, ",") (identifier "unaff_s1") () ")"))) (; ";")) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" (identifier "pcVar8") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar2 = FUN_0002d154(param_1,0);" (assignment_expression "iVar2 = FUN_0002d154(param_1,0)" (identifier "iVar2") (= "=") (call_expression "FUN_0002d154(param_1,0)" (identifier "FUN_0002d154") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }\n          iVar4 = param_1;\n          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n        }" ({ "{") (if_statement "if (param_3 == (char *)0x0) {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" (if "if") (parenthesized_expression "(param_3 == (char *)0x0)" (( "(") (binary_expression "param_3 == (char *)0x0" (identifier "param_3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }" ({ "{") (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x3810" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x3810"))) (; ";")) (} "}")) (else_clause "else if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" (else "else") (if_statement "if (*unaff_s1 == '\0') {\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }\n          else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" (if "if") (parenthesized_expression "(*unaff_s1 == '\0')" (( "(") (binary_expression "*unaff_s1 == '\0'" (pointer_expression "*unaff_s1" (* "*") (identifier "unaff_s1")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            pcVar8 = PTR_LAB_0005601c + 0x3810;\n          }" ({ "{") (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x3810" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x3810"))) (; ";")) (} "}")) (else_clause "else {\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" (else "else") (compound_statement "{\n            pcVar8 = (char *)0x0;\n            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }\n            if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }\n          }" ({ "{") (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" (identifier "pcVar8") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (for_statement "for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));\n                unaff_s0 = unaff_s0 + 1) {\n              pcVar8 = unaff_s0;\n            }" (for "for") (( "(") (assignment_expression "unaff_s0 = (char *)0x1" (identifier "unaff_s0") (= "=") (cast_expression "(char *)0x1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";") (parenthesized_expression "(param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'))" (( "(") (binary_expression "param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0')" (binary_expression "param_3 != unaff_s0" (identifier "param_3") (!= "!=") (identifier "unaff_s0")) (&& "&&") (parenthesized_expression "(unaff_s1[(int)unaff_s0] != '\0')" (( "(") (binary_expression "unaff_s1[(int)unaff_s0] != '\0'" (subscript_expression "unaff_s1[(int)unaff_s0]" (identifier "unaff_s1") ([ "[") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (; ";") (assignment_expression "unaff_s0 = unaff_s0 + 1" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + 1" (identifier "unaff_s0") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n              pcVar8 = unaff_s0;\n            }" ({ "{") (expression_statement "pcVar8 = unaff_s0;" (assignment_expression "pcVar8 = unaff_s0" (identifier "pcVar8") (= "=") (identifier "unaff_s0")) (; ";")) (} "}"))) (if_statement "if (pcVar8 < (char *)0x4f) {\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }\n            else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" (if "if") (parenthesized_expression "(pcVar8 < (char *)0x4f)" (( "(") (binary_expression "pcVar8 < (char *)0x4f" (identifier "pcVar8") (< "<") (cast_expression "(char *)0x4f" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x4f"))) () ")")) (compound_statement "{\n              if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }\n            }" ({ "{") (if_statement "if (param_3 < pcVar8 + 4) {\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }\n              else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" (if "if") (parenthesized_expression "(param_3 < pcVar8 + 4)" (( "(") (binary_expression "param_3 < pcVar8 + 4" (identifier "param_3") (< "<") (binary_expression "pcVar8 + 4" (identifier "pcVar8") (+ "+") (number_literal "4"))) () ")")) (compound_statement "{\n                pcVar8 = PTR_LAB_0005601c + 0x47fc;\n              }" ({ "{") (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x47fc;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x47fc" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x47fc" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x47fc"))) (; ";")) (} "}")) (else_clause "else {\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" (else "else") (compound_statement "{\n                unaff_s1 = unaff_s1 + (int)pcVar8;\n                if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }\n              }" ({ "{") (expression_statement "unaff_s1 = unaff_s1 + (int)pcVar8;" (assignment_expression "unaff_s1 = unaff_s1 + (int)pcVar8" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + (int)pcVar8" (identifier "unaff_s1") (+ "+") (cast_expression "(int)pcVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar8")))) (; ";")) (if_statement "if (unaff_s1[2] == '\0') {\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }\n                else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" (if "if") (parenthesized_expression "(unaff_s1[2] == '\0')" (( "(") (binary_expression "unaff_s1[2] == '\0'" (subscript_expression "unaff_s1[2]" (identifier "unaff_s1") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  local_44 = -1;\n                  unaff_s1 = pcVar8 + 3;\n                  unaff_s5 = 1;\n                  pcVar10 = unaff_s1;\n                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);\n                  if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }\n                }" ({ "{") (expression_statement "local_44 = -1;" (assignment_expression "local_44 = -1" (identifier "local_44") (= "=") (number_literal "-1")) (; ";")) (expression_statement "unaff_s1 = pcVar8 + 3;" (assignment_expression "unaff_s1 = pcVar8 + 3" (identifier "unaff_s1") (= "=") (binary_expression "pcVar8 + 3" (identifier "pcVar8") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "unaff_s5 = 1;" (assignment_expression "unaff_s5 = 1" (identifier "unaff_s5") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar10 = unaff_s1;" (assignment_expression "pcVar10 = unaff_s1" (identifier "pcVar10") (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);" (assignment_expression "iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44)" (identifier "iVar4") (= "=") (call_expression "FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44)" (identifier "FUN_0002d7c4") (argument_list "(param_1,param_3,unaff_s1,&local_44)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (identifier "unaff_s1") (, ",") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (; ";")) (if_statement "if (iVar4 == 1) {\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }\n                  else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" (if "if") (parenthesized_expression "(iVar4 == 1)" (( "(") (binary_expression "iVar4 == 1" (identifier "iVar4") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    iVar2 = *(int *)(param_1 + 0x374);\n                    if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }\n                  }" ({ "{") (expression_statement "iVar2 = *(int *)(param_1 + 0x374);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x374)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x374)" (* "*") (cast_expression "(int *)(param_1 + 0x374)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x374)" (( "(") (binary_expression "param_1 + 0x374" (identifier "param_1") (+ "+") (number_literal "0x374")) () ")"))))) (; ";")) (if_statement "if (iVar2 == 0) {\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }\n                    else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      pcVar8 = PTR_LAB_0005601c + 0x3a04;\n                    }" ({ "{") (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3a04;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3a04" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x3a04" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x3a04"))) (; ";")) (} "}")) (else_clause "else {\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" (else "else") (compound_statement "{\n                      unaff_s0[local_44 + iVar2 + 2] = '\0';\n                      local_40[0] = '\0';\n                      local_40[1] = '\0';\n                      local_40[2] = '\0';\n                      local_40[3] = '\0';\n                      local_38 = unaff_s1 + iVar2;\n                      local_34 = local_44;\n                      local_30 = 0;\n                      local_2c = 0;\n                      local_28 = 0;\n                      pcVar10 = local_40;\n                      iVar4 = param_1;\n                      local_3c = iVar2;\n                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);\n                      pcVar8 = PTR_LAB_0005601c;\n                      if (iVar2 == 0) goto LAB_0003169c;\n                      pcVar8 = PTR_LAB_0005601c + 0x1084;\n                    }" ({ "{") (expression_statement "unaff_s0[local_44 + iVar2 + 2] = '\0';" (assignment_expression "unaff_s0[local_44 + iVar2 + 2] = '\0'" (subscript_expression "unaff_s0[local_44 + iVar2 + 2]" (identifier "unaff_s0") ([ "[") (binary_expression "local_44 + iVar2 + 2" (binary_expression "local_44 + iVar2" (identifier "local_44") (+ "+") (identifier "iVar2")) (+ "+") (number_literal "2")) (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_40[0] = '\0';" (assignment_expression "local_40[0] = '\0'" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_40[1] = '\0';" (assignment_expression "local_40[1] = '\0'" (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_40[2] = '\0';" (assignment_expression "local_40[2] = '\0'" (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_40[3] = '\0';" (assignment_expression "local_40[3] = '\0'" (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_38 = unaff_s1 + iVar2;" (assignment_expression "local_38 = unaff_s1 + iVar2" (identifier "local_38") (= "=") (binary_expression "unaff_s1 + iVar2" (identifier "unaff_s1") (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "local_34 = local_44;" (assignment_expression "local_34 = local_44" (identifier "local_34") (= "=") (identifier "local_44")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar10 = local_40;" (assignment_expression "pcVar10 = local_40" (identifier "pcVar10") (= "=") (identifier "local_40")) (; ";")) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" (identifier "iVar4") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_3c = iVar2;" (assignment_expression "local_3c = iVar2" (identifier "local_3c") (= "=") (identifier "iVar2")) (; ";")) (expression_statement "iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);" (assignment_expression "iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1)" (identifier "iVar2") (= "=") (call_expression "FUN_00035a1c(param_1,param_2,pcVar10,1)" (identifier "FUN_00035a1c") (argument_list "(param_1,param_2,pcVar10,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "pcVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "pcVar8 = PTR_LAB_0005601c;" (assignment_expression "pcVar8 = PTR_LAB_0005601c" (identifier "pcVar8") (= "=") (identifier "PTR_LAB_0005601c")) (; ";")) (if_statement "if (iVar2 == 0) goto LAB_0003169c;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003169c;" (goto "goto") (statement_identifier "LAB_0003169c") (; ";"))) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x1084;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x1084" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x1084" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x1084"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" (else "else") (compound_statement "{\n                    pcVar8 = *(char **)(param_1 + 0x14c);\n                    iVar4 = param_1;\n                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;\n                  }" ({ "{") (expression_statement "pcVar8 = *(char **)(param_1 + 0x14c);" (assignment_expression "pcVar8 = *(char **)(param_1 + 0x14c)" (identifier "pcVar8") (= "=") (pointer_expression "*(char **)(param_1 + 0x14c)" (* "*") (cast_expression "(char **)(param_1 + 0x14c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14c)" (( "(") (binary_expression "param_1 + 0x14c" (identifier "param_1") (+ "+") (number_literal "0x14c")) () ")"))))) (; ";")) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" (identifier "iVar4") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (pcVar8 == (char *)0x0) goto LAB_0003169c;" (if "if") (parenthesized_expression "(pcVar8 == (char *)0x0)" (( "(") (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0003169c;" (goto "goto") (statement_identifier "LAB_0003169c") (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" (else "else") (compound_statement "{\n                  pcVar8 = PTR_LAB_0005601c + 0x3a24;\n                }" ({ "{") (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3a24;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3a24" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x3a24" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x3a24"))) (; ";")) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" (else "else") (compound_statement "{\n              pcVar8 = PTR_LAB_0005601c + 0x3810;\n            }" ({ "{") (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x3810;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x3810" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x3810" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x3810"))) (; ";")) (} "}")))) (} "}")))))) (expression_statement "iVar4 = param_1;" (assignment_expression "iVar4 = param_1" (identifier "iVar4") (= "=") (identifier "param_1")) (; ";")) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" (( "(") (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" (* "*") (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_chunk_benign_error_000564a0"))) () ")")) (argument_list "(param_1,pcVar8)" (( "(") (identifier "param_1") (, ",") (identifier "pcVar8") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0003169c;" (goto "goto") (statement_identifier "LAB_0003169c") (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" (identifier "FUN_0002d154") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x2f14;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x2f14" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x2f14" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x2f14"))) (; ";")) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" (( "(") (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" (* "*") (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_chunk_benign_error_000564a0"))) () ")")) (argument_list "(param_1,pcVar8)" (( "(") (identifier "param_1") (, ",") (identifier "pcVar8") () ")"))) (; ";")) (} "}")) (else_clause "else if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" (else "else") (if_statement "if (iVar2 == 1) {\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }\n  else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" (if "if") (parenthesized_expression "(iVar2 == 1)" (( "(") (binary_expression "iVar2 == 1" (identifier "iVar2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    pcVar8 = param_3;\n    FUN_0002d154(param_1,param_3);\n  }" ({ "{") (expression_statement "pcVar8 = param_3;" (assignment_expression "pcVar8 = param_3" (identifier "pcVar8") (= "=") (identifier "param_3")) (; ";")) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" (identifier "FUN_0002d154") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" (else "else") (compound_statement "{\n    *(int *)(param_1 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031414;\n    FUN_0002d154(param_1,param_3);\n    pcVar8 = PTR_LAB_0005601c + 0x39c0;\n    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);\n  }" ({ "{") (expression_statement "*(int *)(param_1 + 0x354) = iVar2 + -1;" (assignment_expression "*(int *)(param_1 + 0x354) = iVar2 + -1" (pointer_expression "*(int *)(param_1 + 0x354)" (* "*") (cast_expression "(int *)(param_1 + 0x354)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x354)" (( "(") (binary_expression "param_1 + 0x354" (identifier "param_1") (+ "+") (number_literal "0x354")) () ")")))) (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar2 + -1 != 1) goto LAB_00031414;" (if "if") (parenthesized_expression "(iVar2 + -1 != 1)" (( "(") (binary_expression "iVar2 + -1 != 1" (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1")) (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00031414;" (goto "goto") (statement_identifier "LAB_00031414") (; ";"))) (expression_statement "FUN_0002d154(param_1,param_3);" (call_expression "FUN_0002d154(param_1,param_3)" (identifier "FUN_0002d154") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "pcVar8 = PTR_LAB_0005601c + 0x39c0;" (assignment_expression "pcVar8 = PTR_LAB_0005601c + 0x39c0" (identifier "pcVar8") (= "=") (binary_expression "PTR_LAB_0005601c + 0x39c0" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x39c0"))) (; ";")) (expression_statement "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);" (call_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8)" (parenthesized_expression "(*(code *)PTR_png_chunk_benign_error_000564a0)" (( "(") (pointer_expression "*(code *)PTR_png_chunk_benign_error_000564a0" (* "*") (cast_expression "(code *)PTR_png_chunk_benign_error_000564a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_chunk_benign_error_000564a0"))) () ")")) (argument_list "(param_1,pcVar8)" (( "(") (identifier "param_1") (, ",") (identifier "pcVar8") () ")"))) (; ";")) (} "}")))))) (labeled_statement "LAB_0003169c:\n  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }" (statement_identifier "LAB_0003169c") (: ":") (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_000564c0)" (( "(") (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_000564c0" (identifier "local_24") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_000564c0" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000564c0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000564c0")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "puVar14 = PTR___stack_chk_fail_00056488;" (assignment_expression "puVar14 = PTR___stack_chk_fail_00056488" (identifier "puVar14") (= "=") (identifier "PTR___stack_chk_fail_00056488")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00056488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00056488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00056488)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00056488" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00056488" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00056488"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_c0 = puVar14 + 0x2c90c;" (assignment_expression "puStack_c0 = puVar14 + 0x2c90c" (identifier "puStack_c0") (= "=") (binary_expression "puVar14 + 0x2c90c" (identifier "puVar14") (+ "+") (number_literal "0x2c90c"))) (; ";")) (expression_statement "iStack_94 = **(int **)(puVar14 + 0x24ddc);" (assignment_expression "iStack_94 = **(int **)(puVar14 + 0x24ddc)" (identifier "iStack_94") (= "=") (pointer_expression "**(int **)(puVar14 + 0x24ddc)" (* "*") (pointer_expression "*(int **)(puVar14 + 0x24ddc)" (* "*") (cast_expression "(int **)(puVar14 + 0x24ddc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x24ddc)" (( "(") (binary_expression "puVar14 + 0x24ddc" (identifier "puVar14") (+ "+") (number_literal "0x24ddc")) () ")")))))) (; ";")) (expression_statement "iVar2 = *(int *)(iVar4 + 0x354);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x354)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar4 + 0x354)" (* "*") (cast_expression "(int *)(iVar4 + 0x354)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x354)" (( "(") (binary_expression "iVar4 + 0x354" (identifier "iVar4") (+ "+") (number_literal "0x354")) () ")"))))) (; ";")) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" (identifier "pcVar11") (= "=") (identifier "pcVar10")) (; ";")) (expression_statement "pcStack_8c = unaff_s0;" (assignment_expression "pcStack_8c = unaff_s0" (identifier "pcStack_8c") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "pcStack_88 = unaff_s1;" (assignment_expression "pcStack_88 = unaff_s1" (identifier "pcStack_88") (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "pcStack_84 = param_3;" (assignment_expression "pcStack_84 = param_3" (identifier "pcStack_84") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iStack_80 = param_1;" (assignment_expression "iStack_80 = param_1" (identifier "iStack_80") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uStack_7c = param_2;" (assignment_expression "uStack_7c = param_2" (identifier "uStack_7c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "uStack_78 = unaff_s5;" (assignment_expression "uStack_78 = unaff_s5" (identifier "uStack_78") (= "=") (identifier "unaff_s5")) (; ";")) (if_statement "if (iVar2 == 0) {\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }\n  else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);\n    if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }\n    FUN_0002d154(iVar4,pcVar10);\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" ({ "{") (labeled_statement "LAB_00031754:\n    uVar3 = *(uint *)(iVar4 + 0x124);" (statement_identifier "LAB_00031754") (: ":") (expression_statement "uVar3 = *(uint *)(iVar4 + 0x124);" (assignment_expression "uVar3 = *(uint *)(iVar4 + 0x124)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar4 + 0x124)" (* "*") (cast_expression "(uint *)(iVar4 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x124)" (( "(") (binary_expression "iVar4 + 0x124" (identifier "iVar4") (+ "+") (number_literal "0x124")) () ")"))))) (; ";"))) (if_statement "if ((uVar3 & 1) == 0) {\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }\n    else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" (if "if") (parenthesized_expression "((uVar3 & 1) == 0)" (( "(") (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" (( "(") (binary_expression "uVar3 & 1" (identifier "uVar3") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);\n    }" ({ "{") (expression_statement "(**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);" (call_expression "(**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c)" (parenthesized_expression "(**(code **)(puVar14 + 0x24e3c))" (( "(") (pointer_expression "**(code **)(puVar14 + 0x24e3c)" (* "*") (pointer_expression "*(code **)(puVar14 + 0x24e3c)" (* "*") (cast_expression "(code **)(puVar14 + 0x24e3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x24e3c)" (( "(") (binary_expression "puVar14 + 0x24e3c" (identifier "puVar14") (+ "+") (number_literal "0x24e3c")) () ")"))))) () ")")) (argument_list "(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c)" (( "(") (identifier "iVar4") (, ",") (binary_expression "*(int *)(puVar14 + 0x24938) + 0x376c" (pointer_expression "*(int *)(puVar14 + 0x24938)" (* "*") (cast_expression "(int *)(puVar14 + 0x24938)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x24938)" (( "(") (binary_expression "puVar14 + 0x24938" (identifier "puVar14") (+ "+") (number_literal "0x24938")) () ")")))) (+ "+") (number_literal "0x376c")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" (else "else") (compound_statement "{\n      pcVar11 = (char *)0x1;\n      if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }\n      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);\n      if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }\n    }" ({ "{") (expression_statement "pcVar11 = (char *)0x1;" (assignment_expression "pcVar11 = (char *)0x1" (identifier "pcVar11") (= "=") (cast_expression "(char *)0x1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (if_statement "if ((uVar3 & 4) != 0) {\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }" (if "if") (parenthesized_expression "((uVar3 & 4) != 0)" (( "(") (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" (( "(") (binary_expression "uVar3 & 4" (identifier "uVar3") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(uint *)(iVar4 + 0x124) = uVar3 | 8;\n      }" ({ "{") (expression_statement "*(uint *)(iVar4 + 0x124) = uVar3 | 8;" (assignment_expression "*(uint *)(iVar4 + 0x124) = uVar3 | 8" (pointer_expression "*(uint *)(iVar4 + 0x124)" (* "*") (cast_expression "(uint *)(iVar4 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x124)" (( "(") (binary_expression "iVar4 + 0x124" (identifier "iVar4") (+ "+") (number_literal "0x124")) () ")")))) (= "=") (binary_expression "uVar3 | 8" (identifier "uVar3") (| "|") (number_literal "8"))) (; ";")) (} "}"))) (expression_statement "param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);" (assignment_expression "param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1)" (identifier "param_3") (= "=") (cast_expression "(char *)FUN_0002ccbc(iVar4,pcVar10 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002ccbc(iVar4,pcVar10 + 1)" (identifier "FUN_0002ccbc") (argument_list "(iVar4,pcVar10 + 1)" (( "(") (identifier "iVar4") (, ",") (binary_expression "pcVar10 + 1" (identifier "pcVar10") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if (param_3 != (char *)0x0) {\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }" (if "if") (parenthesized_expression "(param_3 != (char *)0x0)" (( "(") (binary_expression "param_3 != (char *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pcVar11 = pcVar10;\n        FUN_0002cfe0(iVar4,param_3);\n        pcVar9 = (char *)0x0;\n        iVar2 = iVar4;\n        iVar5 = FUN_0002d154();\n        if (iVar5 != 0) goto LAB_00031ad0;\n        if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        (*pcVar15)();\n        iVar2 = iVar4;\n        goto LAB_00031ad0;\n      }" ({ "{") (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" (identifier "pcVar11") (= "=") (identifier "pcVar10")) (; ";")) (expression_statement "FUN_0002cfe0(iVar4,param_3);" (call_expression "FUN_0002cfe0(iVar4,param_3)" (identifier "FUN_0002cfe0") (argument_list "(iVar4,param_3)" (( "(") (identifier "iVar4") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "pcVar9 = (char *)0x0;" (assignment_expression "pcVar9 = (char *)0x0" (identifier "pcVar9") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (expression_statement "iVar5 = FUN_0002d154();" (assignment_expression "iVar5 = FUN_0002d154()" (identifier "iVar5") (= "=") (call_expression "FUN_0002d154()" (identifier "FUN_0002d154") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_00031ad0;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00031ad0;" (goto "goto") (statement_identifier "LAB_00031ad0") (; ";"))) (if_statement "if (pcVar10 == (char *)0x0) {\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }\n        else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" (if "if") (parenthesized_expression "(pcVar10 == (char *)0x0)" (( "(") (binary_expression "pcVar10 == (char *)0x0" (identifier "pcVar10") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\nLAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" ({ "{") (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x3810")) () ")")))) (; ";")) (labeled_statement "LAB_00031abc:\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);" (statement_identifier "LAB_00031abc") (: ":") (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b50);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b50)" (identifier "pcVar15") (= "=") (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7b50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7b50)" (( "(") (binary_expression "puStack_c0 + -0x7b50" (identifier "puStack_c0") (+ "+") (number_literal "-0x7b50")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" (else "else") (compound_statement "{\n          if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          pcVar9 = (char *)0x1;\n          pcVar12 = (char *)0x0;\n          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }\n          if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          cVar1 = (param_3 + (int)pcVar12)[2];\n          unaff_s0 = pcVar12 + 4;\n          if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }\nLAB_00031900:\n          unaff_s0 = pcVar12 + 4;\n          iStack_b4 = 0;\n          pcVar9 = unaff_s0;\n          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }\n          pcVar13 = pcVar9 + 1;\n          pcVar12 = pcVar13;\n          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }\n          pcVar12 = pcVar12 + 1;\n          if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }\n          iStack_b4 = -1;\n          uStack_c8 = 1;\n          pcVar11 = pcVar12;\n          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);\n          if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\nLAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;\n          pcStack_98 = param_3 + (int)pcVar13;\n          pcStack_a8 = param_3 + (int)pcVar12;\n          uStack_a4 = 0;\n          iStack_a0 = iStack_b4;\n          pcVar11 = (char *)&uStack_b0;\n          pcStack_ac = param_3;\n          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);\n          pcVar9 = (char *)0x0;\n          if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }\n          iVar2 = iVar4;\n          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;\n          pcVar15 = *(code **)(puStack_c0 + -0x7b50);\n        }" ({ "{") (if_statement "if (*param_3 == '\0') {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" (if "if") (parenthesized_expression "(*param_3 == '\0')" (( "(") (binary_expression "*param_3 == '\0'" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" ({ "{") (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x3810")) () ")")))) (; ";")) (goto_statement "goto LAB_00031abc;" (goto "goto") (statement_identifier "LAB_00031abc") (; ";")) (} "}"))) (expression_statement "pcVar9 = (char *)0x1;" (assignment_expression "pcVar9 = (char *)0x1" (identifier "pcVar9") (= "=") (cast_expression "(char *)0x1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "pcVar12 = (char *)0x0;" (assignment_expression "pcVar12 = (char *)0x0" (identifier "pcVar12") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (while_statement "while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }" (while "while") (parenthesized_expression "((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')))" (( "(") (parenthesized_expression "(pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))" (( "(") (comma_expression "pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')" (assignment_expression "pcVar13 = pcVar9" (identifier "pcVar13") (= "=") (identifier "pcVar9")) (, ",") (binary_expression "pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0')" (binary_expression "pcVar10 != pcVar13" (identifier "pcVar10") (!= "!=") (identifier "pcVar13")) (&& "&&") (parenthesized_expression "(param_3[(int)pcVar13] != '\0')" (( "(") (binary_expression "param_3[(int)pcVar13] != '\0'" (subscript_expression "param_3[(int)pcVar13]" (identifier "param_3") ([ "[") (cast_expression "(int)pcVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar13")) (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) () ")")) (compound_statement "{\n            pcVar12 = pcVar13;\n            pcVar9 = pcVar13 + 1;\n          }" ({ "{") (expression_statement "pcVar12 = pcVar13;" (assignment_expression "pcVar12 = pcVar13" (identifier "pcVar12") (= "=") (identifier "pcVar13")) (; ";")) (expression_statement "pcVar9 = pcVar13 + 1;" (assignment_expression "pcVar9 = pcVar13 + 1" (identifier "pcVar9") (= "=") (binary_expression "pcVar13 + 1" (identifier "pcVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((char *)0x4e < pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" (if "if") (parenthesized_expression "((char *)0x4e < pcVar12)" (( "(") (binary_expression "(char *)0x4e < pcVar12" (cast_expression "(char *)0x4e" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x4e")) (< "<") (identifier "pcVar12")) () ")")) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);\n            goto LAB_00031abc;\n          }" ({ "{") (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3810)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3810" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x3810")) () ")")))) (; ";")) (goto_statement "goto LAB_00031abc;" (goto "goto") (statement_identifier "LAB_00031abc") (; ";")) (} "}"))) (if_statement "if (pcVar10 < pcVar12 + 6) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" (if "if") (parenthesized_expression "(pcVar10 < pcVar12 + 6)" (( "(") (binary_expression "pcVar10 < pcVar12 + 6" (identifier "pcVar10") (< "<") (binary_expression "pcVar12 + 6" (identifier "pcVar12") (+ "+") (number_literal "6"))) () ")")) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" ({ "{") (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x47fc")) () ")")))) (; ";")) (goto_statement "goto LAB_00031abc;" (goto "goto") (statement_identifier "LAB_00031abc") (; ";")) (} "}"))) (expression_statement "cVar1 = (param_3 + (int)pcVar12)[2];" (assignment_expression "cVar1 = (param_3 + (int)pcVar12)[2]" (identifier "cVar1") (= "=") (subscript_expression "(param_3 + (int)pcVar12)[2]" (parenthesized_expression "(param_3 + (int)pcVar12)" (( "(") (binary_expression "param_3 + (int)pcVar12" (identifier "param_3") (+ "+") (cast_expression "(int)pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar12"))) () ")")) ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" (identifier "unaff_s0") (= "=") (binary_expression "pcVar12 + 4" (identifier "pcVar12") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (cVar1 != '\0') {\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            goto LAB_00031abc;\n          }" ({ "{") (if_statement "if (cVar1 == '\x01') {\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }\n            else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" (if "if") (parenthesized_expression "(cVar1 == '\x01')" (( "(") (binary_expression "cVar1 == '\x01'" (identifier "cVar1") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n              unaff_s0 = pcVar12 + 4;\n              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" ({ "{") (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" (identifier "unaff_s0") (= "=") (binary_expression "pcVar12 + 4" (identifier "pcVar12") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;" (if "if") (parenthesized_expression "((param_3 + (int)pcVar12)[3] == '\0')" (( "(") (binary_expression "(param_3 + (int)pcVar12)[3] == '\0'" (subscript_expression "(param_3 + (int)pcVar12)[3]" (parenthesized_expression "(param_3 + (int)pcVar12)" (( "(") (binary_expression "param_3 + (int)pcVar12" (identifier "param_3") (+ "+") (cast_expression "(int)pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar12"))) () ")")) ([ "[") (number_literal "3") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00031900;" (goto "goto") (statement_identifier "LAB_00031900") (; ";"))) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3a40" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x3a40")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" (else "else") (compound_statement "{\n              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);\n            }" ({ "{") (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x3a40" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x3a40")) () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_00031abc;" (goto "goto") (statement_identifier "LAB_00031abc") (; ";")) (} "}"))) (labeled_statement "LAB_00031900:\n          unaff_s0 = pcVar12 + 4;" (statement_identifier "LAB_00031900") (: ":") (expression_statement "unaff_s0 = pcVar12 + 4;" (assignment_expression "unaff_s0 = pcVar12 + 4" (identifier "unaff_s0") (= "=") (binary_expression "pcVar12 + 4" (identifier "pcVar12") (+ "+") (number_literal "4"))) (; ";"))) (expression_statement "iStack_b4 = 0;" (assignment_expression "iStack_b4 = 0" (identifier "iStack_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar9 = unaff_s0;" (assignment_expression "pcVar9 = unaff_s0" (identifier "pcVar9") (= "=") (identifier "unaff_s0")) (; ";")) (if_statement "if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }" (if "if") (parenthesized_expression "((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0'))" (( "(") (binary_expression "(unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')" (parenthesized_expression "(unaff_s0 < pcVar10)" (( "(") (binary_expression "unaff_s0 < pcVar10" (identifier "unaff_s0") (< "<") (identifier "pcVar10")) () ")")) (&& "&&") (parenthesized_expression "(param_3[(int)unaff_s0] != '\0')" (( "(") (binary_expression "param_3[(int)unaff_s0] != '\0'" (subscript_expression "param_3[(int)unaff_s0]" (identifier "param_3") ([ "[") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            pcVar12 = pcVar12 + 5;\n            do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');\n          }" ({ "{") (expression_statement "pcVar12 = pcVar12 + 5;" (assignment_expression "pcVar12 = pcVar12 + 5" (identifier "pcVar12") (= "=") (binary_expression "pcVar12 + 5" (identifier "pcVar12") (+ "+") (number_literal "5"))) (; ";")) (do_statement "do {\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            } while (param_3[(int)pcVar9] != '\0');" (do "do") (compound_statement "{\n              pcVar9 = pcVar12;\n              if (pcVar10 == pcVar9) break;\n              pcVar12 = pcVar9 + 1;\n            }" ({ "{") (expression_statement "pcVar9 = pcVar12;" (assignment_expression "pcVar9 = pcVar12" (identifier "pcVar9") (= "=") (identifier "pcVar12")) (; ";")) (if_statement "if (pcVar10 == pcVar9) break;" (if "if") (parenthesized_expression "(pcVar10 == pcVar9)" (( "(") (binary_expression "pcVar10 == pcVar9" (identifier "pcVar10") (== "==") (identifier "pcVar9")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar12 = pcVar9 + 1;" (assignment_expression "pcVar12 = pcVar9 + 1" (identifier "pcVar12") (= "=") (binary_expression "pcVar9 + 1" (identifier "pcVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3[(int)pcVar9] != '\0')" (( "(") (binary_expression "param_3[(int)pcVar9] != '\0'" (subscript_expression "param_3[(int)pcVar9]" (identifier "param_3") ([ "[") (cast_expression "(int)pcVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar9")) (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar13 = pcVar9 + 1;" (assignment_expression "pcVar13 = pcVar9 + 1" (identifier "pcVar13") (= "=") (binary_expression "pcVar9 + 1" (identifier "pcVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar12 = pcVar13;" (assignment_expression "pcVar12 = pcVar13" (identifier "pcVar12") (= "=") (identifier "pcVar13")) (; ";")) (if_statement "if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }" (if "if") (parenthesized_expression "((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0'))" (( "(") (binary_expression "(pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')" (parenthesized_expression "(pcVar13 < pcVar10)" (( "(") (binary_expression "pcVar13 < pcVar10" (identifier "pcVar13") (< "<") (identifier "pcVar10")) () ")")) (&& "&&") (parenthesized_expression "(param_3[(int)pcVar13] != '\0')" (( "(") (binary_expression "param_3[(int)pcVar13] != '\0'" (subscript_expression "param_3[(int)pcVar13]" (identifier "param_3") ([ "[") (cast_expression "(int)pcVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar13")) (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            pcVar9 = pcVar9 + 2;\n            do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');\n          }" ({ "{") (expression_statement "pcVar9 = pcVar9 + 2;" (assignment_expression "pcVar9 = pcVar9 + 2" (identifier "pcVar9") (= "=") (binary_expression "pcVar9 + 2" (identifier "pcVar9") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            } while (param_3[(int)pcVar12] != '\0');" (do "do") (compound_statement "{\n              pcVar12 = pcVar9;\n              if (pcVar10 <= pcVar12) break;\n              pcVar9 = pcVar12 + 1;\n            }" ({ "{") (expression_statement "pcVar12 = pcVar9;" (assignment_expression "pcVar12 = pcVar9" (identifier "pcVar12") (= "=") (identifier "pcVar9")) (; ";")) (if_statement "if (pcVar10 <= pcVar12) break;" (if "if") (parenthesized_expression "(pcVar10 <= pcVar12)" (( "(") (binary_expression "pcVar10 <= pcVar12" (identifier "pcVar10") (<= "<=") (identifier "pcVar12")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar9 = pcVar12 + 1;" (assignment_expression "pcVar9 = pcVar12 + 1" (identifier "pcVar9") (= "=") (binary_expression "pcVar12 + 1" (identifier "pcVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3[(int)pcVar12] != '\0')" (( "(") (binary_expression "param_3[(int)pcVar12] != '\0'" (subscript_expression "param_3[(int)pcVar12]" (identifier "param_3") ([ "[") (cast_expression "(int)pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar12")) (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar12 = pcVar12 + 1;" (assignment_expression "pcVar12 = pcVar12 + 1" (identifier "pcVar12") (= "=") (binary_expression "pcVar12 + 1" (identifier "pcVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar1 == '\0') {\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" ({ "{") (if_statement "if (pcVar12 <= pcVar10) {\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }" (if "if") (parenthesized_expression "(pcVar12 <= pcVar10)" (( "(") (binary_expression "pcVar12 <= pcVar10" (identifier "pcVar12") (<= "<=") (identifier "pcVar10")) () ")")) (compound_statement "{\n              iStack_b4 = (int)pcVar10 - (int)pcVar12;\n              pcVar10 = param_3 + (int)pcVar10;\n              *pcVar10 = '\0';\n              uStack_b0 = 1;\n              goto LAB_000319a0;\n            }" ({ "{") (expression_statement "iStack_b4 = (int)pcVar10 - (int)pcVar12;" (assignment_expression "iStack_b4 = (int)pcVar10 - (int)pcVar12" (identifier "iStack_b4") (= "=") (binary_expression "(int)pcVar10 - (int)pcVar12" (cast_expression "(int)pcVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar10")) (- "-") (cast_expression "(int)pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar12")))) (; ";")) (expression_statement "pcVar10 = param_3 + (int)pcVar10;" (assignment_expression "pcVar10 = param_3 + (int)pcVar10" (identifier "pcVar10") (= "=") (binary_expression "param_3 + (int)pcVar10" (identifier "param_3") (+ "+") (cast_expression "(int)pcVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar10")))) (; ";")) (expression_statement "*pcVar10 = '\0';" (assignment_expression "*pcVar10 = '\0'" (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" (identifier "uStack_b0") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_000319a0;" (goto "goto") (statement_identifier "LAB_000319a0") (; ";")) (} "}"))) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x47fc")) () ")")))) (; ";")) (goto_statement "goto LAB_00031abc;" (goto "goto") (statement_identifier "LAB_00031abc") (; ";")) (} "}"))) (if_statement "if (pcVar10 <= pcVar12) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" (if "if") (parenthesized_expression "(pcVar10 <= pcVar12)" (( "(") (binary_expression "pcVar10 <= pcVar12" (identifier "pcVar10") (<= "<=") (identifier "pcVar12")) () ")")) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);\n            goto LAB_00031abc;\n          }" ({ "{") (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x47fc" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x47fc")) () ")")))) (; ";")) (goto_statement "goto LAB_00031abc;" (goto "goto") (statement_identifier "LAB_00031abc") (; ";")) (} "}"))) (expression_statement "iStack_b4 = -1;" (assignment_expression "iStack_b4 = -1" (identifier "iStack_b4") (= "=") (number_literal "-1")) (; ";")) (expression_statement "uStack_c8 = 1;" (assignment_expression "uStack_c8 = 1" (identifier "uStack_c8") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar11 = pcVar12;" (assignment_expression "pcVar11 = pcVar12" (identifier "pcVar11") (= "=") (identifier "pcVar12")) (; ";")) (expression_statement "iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);" (assignment_expression "iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4)" (identifier "iVar2") (= "=") (call_expression "FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4)" (identifier "FUN_0002d7c4") (argument_list "(iVar4,pcVar10,pcVar12,&iStack_b4)" (( "(") (identifier "iVar4") (, ",") (identifier "pcVar10") (, ",") (identifier "pcVar12") (, ",") (pointer_expression "&iStack_b4" (& "&") (identifier "iStack_b4")) () ")")))) (; ";")) (if_statement "if (iVar2 == 1) {\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }\n          else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" (if "if") (parenthesized_expression "(iVar2 == 1)" (( "(") (binary_expression "iVar2 == 1" (identifier "iVar2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            param_3 = *(char **)(iVar4 + 0x374);\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" ({ "{") (expression_statement "param_3 = *(char **)(iVar4 + 0x374);" (assignment_expression "param_3 = *(char **)(iVar4 + 0x374)" (identifier "param_3") (= "=") (pointer_expression "*(char **)(iVar4 + 0x374)" (* "*") (cast_expression "(char **)(iVar4 + 0x374)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 0x374)" (( "(") (binary_expression "iVar4 + 0x374" (identifier "iVar4") (+ "+") (number_literal "0x374")) () ")"))))) (; ";")) (expression_statement "(param_3 + (int)pcVar12)[iStack_b4] = '\0';" (assignment_expression "(param_3 + (int)pcVar12)[iStack_b4] = '\0'" (subscript_expression "(param_3 + (int)pcVar12)[iStack_b4]" (parenthesized_expression "(param_3 + (int)pcVar12)" (( "(") (binary_expression "param_3 + (int)pcVar12" (identifier "param_3") (+ "+") (cast_expression "(int)pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar12"))) () ")")) ([ "[") (identifier "iStack_b4") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "uStack_b0 = 2;" (assignment_expression "uStack_b0 = 2" (identifier "uStack_b0") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" (else "else") (compound_statement "{\n            pcVar9 = *(char **)(iVar4 + 0x14c);\n            if (pcVar9 != (char *)0x0) goto LAB_00031abc;\n            (param_3 + (int)pcVar12)[iStack_b4] = '\0';\n            uStack_b0 = 2;\n          }" ({ "{") (expression_statement "pcVar9 = *(char **)(iVar4 + 0x14c);" (assignment_expression "pcVar9 = *(char **)(iVar4 + 0x14c)" (identifier "pcVar9") (= "=") (pointer_expression "*(char **)(iVar4 + 0x14c)" (* "*") (cast_expression "(char **)(iVar4 + 0x14c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 0x14c)" (( "(") (binary_expression "iVar4 + 0x14c" (identifier "iVar4") (+ "+") (number_literal "0x14c")) () ")"))))) (; ";")) (if_statement "if (pcVar9 != (char *)0x0) goto LAB_00031abc;" (if "if") (parenthesized_expression "(pcVar9 != (char *)0x0)" (( "(") (binary_expression "pcVar9 != (char *)0x0" (identifier "pcVar9") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00031abc;" (goto "goto") (statement_identifier "LAB_00031abc") (; ";"))) (expression_statement "(param_3 + (int)pcVar12)[iStack_b4] = '\0';" (assignment_expression "(param_3 + (int)pcVar12)[iStack_b4] = '\0'" (subscript_expression "(param_3 + (int)pcVar12)[iStack_b4]" (parenthesized_expression "(param_3 + (int)pcVar12)" (( "(") (binary_expression "param_3 + (int)pcVar12" (identifier "param_3") (+ "+") (cast_expression "(int)pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar12"))) () ")")) ([ "[") (identifier "iStack_b4") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "uStack_b0 = 2;" (assignment_expression "uStack_b0 = 2" (identifier "uStack_b0") (= "=") (number_literal "2")) (; ";")) (} "}")))) (labeled_statement "LAB_000319a0:\n          pcStack_9c = param_3 + (int)unaff_s0;" (statement_identifier "LAB_000319a0") (: ":") (expression_statement "pcStack_9c = param_3 + (int)unaff_s0;" (assignment_expression "pcStack_9c = param_3 + (int)unaff_s0" (identifier "pcStack_9c") (= "=") (binary_expression "param_3 + (int)unaff_s0" (identifier "param_3") (+ "+") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")))) (; ";"))) (expression_statement "pcStack_98 = param_3 + (int)pcVar13;" (assignment_expression "pcStack_98 = param_3 + (int)pcVar13" (identifier "pcStack_98") (= "=") (binary_expression "param_3 + (int)pcVar13" (identifier "param_3") (+ "+") (cast_expression "(int)pcVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar13")))) (; ";")) (expression_statement "pcStack_a8 = param_3 + (int)pcVar12;" (assignment_expression "pcStack_a8 = param_3 + (int)pcVar12" (identifier "pcStack_a8") (= "=") (binary_expression "param_3 + (int)pcVar12" (identifier "param_3") (+ "+") (cast_expression "(int)pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar12")))) (; ";")) (expression_statement "uStack_a4 = 0;" (assignment_expression "uStack_a4 = 0" (identifier "uStack_a4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_a0 = iStack_b4;" (assignment_expression "iStack_a0 = iStack_b4" (identifier "iStack_a0") (= "=") (identifier "iStack_b4")) (; ";")) (expression_statement "pcVar11 = (char *)&uStack_b0;" (assignment_expression "pcVar11 = (char *)&uStack_b0" (identifier "pcVar11") (= "=") (cast_expression "(char *)&uStack_b0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&uStack_b0" (& "&") (identifier "uStack_b0")))) (; ";")) (expression_statement "pcStack_ac = param_3;" (assignment_expression "pcStack_ac = param_3" (identifier "pcStack_ac") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);" (assignment_expression "iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1)" (identifier "iVar2") (= "=") (call_expression "FUN_00035a1c(iVar4,pcVar8,pcVar11,1)" (identifier "FUN_00035a1c") (argument_list "(iVar4,pcVar8,pcVar11,1)" (( "(") (identifier "iVar4") (, ",") (identifier "pcVar8") (, ",") (identifier "pcVar11") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "pcVar9 = (char *)0x0;" (assignment_expression "pcVar9 = (char *)0x0" (identifier "pcVar9") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar2 != 0) {\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);\n          }" ({ "{") (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x1084)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x1084" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x1084")) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (pcVar9 == (char *)0x0) goto LAB_00031ad0;" (if "if") (parenthesized_expression "(pcVar9 == (char *)0x0)" (( "(") (binary_expression "pcVar9 == (char *)0x0" (identifier "pcVar9") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00031ad0;" (goto "goto") (statement_identifier "LAB_00031ad0") (; ";"))) (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b50);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b50)" (identifier "pcVar15") (= "=") (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7b50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7b50)" (( "(") (binary_expression "puStack_c0 + -0x7b50" (identifier "puStack_c0") (+ "+") (number_literal "-0x7b50")) () ")"))))) (; ";")) (} "}")))) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (goto_statement "goto LAB_00031ad0;" (goto "goto") (statement_identifier "LAB_00031ad0") (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_0002d154(iVar4,pcVar10);" (call_expression "FUN_0002d154(iVar4,pcVar10)" (identifier "FUN_0002d154") (argument_list "(iVar4,pcVar10)" (( "(") (identifier "iVar4") (, ",") (identifier "pcVar10") () ")"))) (; ";")) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x2f14" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x2f14")) () ")")))) (; ";")) (expression_statement "(**(code **)(puStack_c0 + -0x7b50))();" (call_expression "(**(code **)(puStack_c0 + -0x7b50))()" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7b50))" (( "(") (pointer_expression "**(code **)(puStack_c0 + -0x7b50)" (* "*") (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7b50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7b50)" (( "(") (binary_expression "puStack_c0 + -0x7b50" (identifier "puStack_c0") (+ "+") (number_literal "-0x7b50")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (else_clause "else if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" (else "else") (if_statement "if (iVar2 == 1) {\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }\n  else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" (if "if") (parenthesized_expression "(iVar2 == 1)" (( "(") (binary_expression "iVar2 == 1" (identifier "iVar2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    pcVar9 = pcVar10;\n    FUN_0002d154();\n    iVar2 = iVar4;\n  }" ({ "{") (expression_statement "pcVar9 = pcVar10;" (assignment_expression "pcVar9 = pcVar10" (identifier "pcVar9") (= "=") (identifier "pcVar10")) (; ";")) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" (identifier "FUN_0002d154") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (else_clause "else {\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" (else "else") (compound_statement "{\n    *(int *)(iVar4 + 0x354) = iVar2 + -1;\n    if (iVar2 + -1 != 1) goto LAB_00031754;\n    FUN_0002d154();\n    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);\n    (**(code **)(puStack_c0 + -0x7b50))();\n    iVar2 = iVar4;\n  }" ({ "{") (expression_statement "*(int *)(iVar4 + 0x354) = iVar2 + -1;" (assignment_expression "*(int *)(iVar4 + 0x354) = iVar2 + -1" (pointer_expression "*(int *)(iVar4 + 0x354)" (* "*") (cast_expression "(int *)(iVar4 + 0x354)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x354)" (( "(") (binary_expression "iVar4 + 0x354" (identifier "iVar4") (+ "+") (number_literal "0x354")) () ")")))) (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar2 + -1 != 1) goto LAB_00031754;" (if "if") (parenthesized_expression "(iVar2 + -1 != 1)" (( "(") (binary_expression "iVar2 + -1 != 1" (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1")) (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00031754;" (goto "goto") (statement_identifier "LAB_00031754") (; ";"))) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" (identifier "FUN_0002d154") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);" (assignment_expression "pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7fd4) + 0x39c0" (pointer_expression "*(int *)(puStack_c0 + -0x7fd4)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fd4)" (( "(") (binary_expression "puStack_c0 + -0x7fd4" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fd4")) () ")")))) (+ "+") (number_literal "0x39c0")) () ")")))) (; ";")) (expression_statement "(**(code **)(puStack_c0 + -0x7b50))();" (call_expression "(**(code **)(puStack_c0 + -0x7b50))()" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7b50))" (( "(") (pointer_expression "**(code **)(puStack_c0 + -0x7b50)" (* "*") (pointer_expression "*(code **)(puStack_c0 + -0x7b50)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7b50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7b50)" (( "(") (binary_expression "puStack_c0 + -0x7b50" (identifier "puStack_c0") (+ "+") (number_literal "-0x7b50")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (} "}")))))) (labeled_statement "LAB_00031ad0:\n  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }" (statement_identifier "LAB_00031ad0") (: ":") (if_statement "if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {\n    return;\n  }" (if "if") (parenthesized_expression "(iStack_94 == **(int **)(puStack_c0 + -0x7b30))" (( "(") (binary_expression "iStack_94 == **(int **)(puStack_c0 + -0x7b30)" (identifier "iStack_94") (== "==") (pointer_expression "**(int **)(puStack_c0 + -0x7b30)" (* "*") (pointer_expression "*(int **)(puStack_c0 + -0x7b30)" (* "*") (cast_expression "(int **)(puStack_c0 + -0x7b30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7b30)" (( "(") (binary_expression "puStack_c0 + -0x7b30" (identifier "puStack_c0") (+ "+") (number_literal "-0x7b30")) () ")")))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "pcVar15 = *(code **)(puStack_c0 + -0x7b68);" (assignment_expression "pcVar15 = *(code **)(puStack_c0 + -0x7b68)" (identifier "pcVar15") (= "=") (pointer_expression "*(code **)(puStack_c0 + -0x7b68)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7b68)" (( "(") (binary_expression "puStack_c0 + -0x7b68" (identifier "puStack_c0") (+ "+") (number_literal "-0x7b68")) () ")"))))) (; ";")) (expression_statement "pcVar16 = FUN_00031b30;" (assignment_expression "pcVar16 = FUN_00031b30" (identifier "pcVar16") (= "=") (identifier "FUN_00031b30")) (; ";")) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iStack_ec = **(int **)(pcVar15 + 0x24990);" (assignment_expression "iStack_ec = **(int **)(pcVar15 + 0x24990)" (identifier "iStack_ec") (= "=") (pointer_expression "**(int **)(pcVar15 + 0x24990)" (* "*") (pointer_expression "*(int **)(pcVar15 + 0x24990)" (* "*") (cast_expression "(int **)(pcVar15 + 0x24990)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x24990)" (( "(") (binary_expression "pcVar15 + 0x24990" (identifier "pcVar15") (+ "+") (number_literal "0x24990")) () ")")))))) (; ";")) (expression_statement "uVar3 = *(uint *)(iVar2 + 0x124);" (assignment_expression "uVar3 = *(uint *)(iVar2 + 0x124)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar2 + 0x124)" (* "*") (cast_expression "(uint *)(iVar2 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x124)" (( "(") (binary_expression "iVar2 + 0x124" (identifier "iVar2") (+ "+") (number_literal "0x124")) () ")"))))) (; ";")) (expression_statement "pcStack_e8 = unaff_s0;" (assignment_expression "pcStack_e8 = unaff_s0" (identifier "pcStack_e8") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "pcStack_e4 = pcVar10;" (assignment_expression "pcStack_e4 = pcVar10" (identifier "pcStack_e4") (= "=") (identifier "pcVar10")) (; ";")) (expression_statement "pcStack_e0 = param_3;" (assignment_expression "pcStack_e0 = param_3" (identifier "pcStack_e0") (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcStack_dc = pcVar16;" (assignment_expression "pcStack_dc = pcVar16" (identifier "pcStack_dc") (= "=") (identifier "pcVar16")) (; ";")) (if_statement "if ((uVar3 & 1) == 0) {\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }\n  else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" (if "if") (parenthesized_expression "((uVar3 & 1) == 0)" (( "(") (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" (( "(") (binary_expression "uVar3 & 1" (identifier "uVar3") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (**(code **)(pcVar15 + 0x248e0))();\n    pcVar11 = pcVar10;\n  }" ({ "{") (expression_statement "(**(code **)(pcVar15 + 0x248e0))();" (call_expression "(**(code **)(pcVar15 + 0x248e0))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x248e0))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x248e0)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x248e0)" (* "*") (cast_expression "(code **)(pcVar15 + 0x248e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x248e0)" (( "(") (binary_expression "pcVar15 + 0x248e0" (identifier "pcVar15") (+ "+") (number_literal "0x248e0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" (identifier "pcVar11") (= "=") (identifier "pcVar10")) (; ";")) (} "}")) (else_clause "else if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" (else "else") (if_statement "if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" (if "if") (parenthesized_expression "((uVar3 & 4) == 0)" (( "(") (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" (( "(") (binary_expression "uVar3 & 4" (identifier "uVar3") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    goto LAB_00031bc4;\n  }" ({ "{") (if_statement "if ((int)(uVar3 << 0xf) < 0) {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }\n    else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" (if "if") (parenthesized_expression "((int)(uVar3 << 0xf) < 0)" (( "(") (binary_expression "(int)(uVar3 << 0xf) < 0" (cast_expression "(int)(uVar3 << 0xf)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar3 << 0xf)" (( "(") (binary_expression "uVar3 << 0xf" (identifier "uVar3") (<< "<<") (number_literal "0xf")) () ")"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" ({ "{") (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x24914)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x24914)" (* "*") (cast_expression "(code **)(pcVar15 + 0x24914)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x24914)" (( "(") (binary_expression "pcVar15 + 0x24914" (identifier "pcVar15") (+ "+") (number_literal "0x24914")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" (identifier "FUN_0002d154") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" (identifier "iVar4") (= "=") (identifier "iVar2")) (; ";")) (} "}")) (else_clause "else if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" (else "else") (if_statement "if (pcVar11 == (char *)0x8) {\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }\n    else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" (if "if") (parenthesized_expression "(pcVar11 == (char *)0x8)" (( "(") (binary_expression "pcVar11 == (char *)0x8" (identifier "pcVar11") (== "==") (cast_expression "(char *)0x8" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x8"))) () ")")) (compound_statement "{\n      FUN_0002cfe0();\n      FUN_0002d154(iVar2,0);\n      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);\n      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);\n      iVar4 = iVar2;\n      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);\n      pcVar11 = pcVar9;\n      if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }\n    }" ({ "{") (expression_statement "FUN_0002cfe0();" (call_expression "FUN_0002cfe0()" (identifier "FUN_0002cfe0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0002d154(iVar2,0);" (call_expression "FUN_0002d154(iVar2,0)" (identifier "FUN_0002d154") (argument_list "(iVar2,0)" (( "(") (identifier "iVar2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);" (assignment_expression "uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4)" (identifier "uVar6") (= "=") (call_expression "(**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4)" (parenthesized_expression "(**(code **)(pcVar15 + 0x24810))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x24810)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x24810)" (* "*") (cast_expression "(code **)(pcVar15 + 0x24810)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x24810)" (( "(") (binary_expression "pcVar15 + 0x24810" (identifier "pcVar15") (+ "+") (number_literal "0x24810")) () ")"))))) () ")")) (argument_list "(iVar2,auStack_f4)" (( "(") (identifier "iVar2") (, ",") (identifier "auStack_f4") () ")")))) (; ";")) (expression_statement "uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);" (assignment_expression "uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0)" (parenthesized_expression "(**(code **)(pcVar15 + 0x24810))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x24810)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x24810)" (* "*") (cast_expression "(code **)(pcVar15 + 0x24810)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x24810)" (( "(") (binary_expression "pcVar15 + 0x24810" (identifier "pcVar15") (+ "+") (number_literal "0x24810")) () ")"))))) () ")")) (argument_list "(iVar2,auStack_f0)" (( "(") (identifier "iVar2") (, ",") (identifier "auStack_f0") () ")")))) (; ";")) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" (identifier "iVar4") (= "=") (identifier "iVar2")) (; ";")) (expression_statement "iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);" (assignment_expression "iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7)" (identifier "iVar5") (= "=") (call_expression "(**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7)" (parenthesized_expression "(**(code **)(pcVar15 + 0x2484c))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x2484c)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x2484c)" (* "*") (cast_expression "(code **)(pcVar15 + 0x2484c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x2484c)" (( "(") (binary_expression "pcVar15 + 0x2484c" (identifier "pcVar15") (+ "+") (number_literal "0x2484c")) () ")"))))) () ")")) (argument_list "(iVar2,pcVar9,uVar6,uVar7)" (( "(") (identifier "iVar2") (, ",") (identifier "pcVar9") (, ",") (identifier "uVar6") (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "pcVar11 = pcVar9;" (assignment_expression "pcVar11 = pcVar9" (identifier "pcVar11") (= "=") (identifier "pcVar9")) (; ";")) (if_statement "if (iVar5 != 0) {\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;\n      }" ({ "{") (expression_statement "*(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;" (assignment_expression "*(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000" (pointer_expression "*(uint *)(iVar2 + 0x124)" (* "*") (cast_expression "(uint *)(iVar2 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x124)" (( "(") (binary_expression "iVar2 + 0x124" (identifier "iVar2") (+ "+") (number_literal "0x124")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar2 + 0x124) | 0x10000" (pointer_expression "*(uint *)(iVar2 + 0x124)" (* "*") (cast_expression "(uint *)(iVar2 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x124)" (( "(") (binary_expression "iVar2 + 0x124" (identifier "iVar2") (+ "+") (number_literal "0x124")) () ")")))) (| "|") (number_literal "0x10000"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" (else "else") (compound_statement "{\n      (**(code **)(pcVar15 + 0x24914))();\n      FUN_0002d154();\n      iVar4 = iVar2;\n    }" ({ "{") (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x24914)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x24914)" (* "*") (cast_expression "(code **)(pcVar15 + 0x24914)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x24914)" (( "(") (binary_expression "pcVar15 + 0x24914" (identifier "pcVar15") (+ "+") (number_literal "0x24914")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" (identifier "FUN_0002d154") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" (identifier "iVar4") (= "=") (identifier "iVar2")) (; ";")) (} "}")))))) (goto_statement "goto LAB_00031bc4;" (goto "goto") (statement_identifier "LAB_00031bc4") (; ";")) (} "}"))))) (expression_statement "(**(code **)(pcVar15 + 0x24914))();" (call_expression "(**(code **)(pcVar15 + 0x24914))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24914))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x24914)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x24914)" (* "*") (cast_expression "(code **)(pcVar15 + 0x24914)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x24914)" (( "(") (binary_expression "pcVar15 + 0x24914" (identifier "pcVar15") (+ "+") (number_literal "0x24914")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0002d154();" (call_expression "FUN_0002d154()" (identifier "FUN_0002d154") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" (identifier "iVar4") (= "=") (identifier "iVar2")) (; ";")) (labeled_statement "LAB_00031bc4:\n  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }" (statement_identifier "LAB_00031bc4") (: ":") (if_statement "if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {\n    return;\n  }" (if "if") (parenthesized_expression "(iStack_ec == **(int **)(pcVar15 + 0x24990))" (( "(") (binary_expression "iStack_ec == **(int **)(pcVar15 + 0x24990)" (identifier "iStack_ec") (== "==") (pointer_expression "**(int **)(pcVar15 + 0x24990)" (* "*") (pointer_expression "*(int **)(pcVar15 + 0x24990)" (* "*") (cast_expression "(int **)(pcVar15 + 0x24990)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x24990)" (( "(") (binary_expression "pcVar15 + 0x24990" (identifier "pcVar15") (+ "+") (number_literal "0x24990")) () ")")))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "(**(code **)(pcVar15 + 0x24958))();" (call_expression "(**(code **)(pcVar15 + 0x24958))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x24958))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x24958)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x24958)" (* "*") (cast_expression "(code **)(pcVar15 + 0x24958)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x24958)" (( "(") (binary_expression "pcVar15 + 0x24958" (identifier "pcVar15") (+ "+") (number_literal "0x24958")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }" (if "if") (parenthesized_expression "((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000)" (( "(") (binary_expression "(*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000" (parenthesized_expression "(*(uint *)(pcVar11 + 8) & 0x60000)" (( "(") (binary_expression "*(uint *)(pcVar11 + 8) & 0x60000" (pointer_expression "*(uint *)(pcVar11 + 8)" (* "*") (cast_expression "(uint *)(pcVar11 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 8)" (( "(") (binary_expression "pcVar11 + 8" (identifier "pcVar11") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x60000")) () ")")) (== "==") (number_literal "0x20000")) () ")")) (compound_statement "{\n    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;\n    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;\n    return;\n  }" ({ "{") (expression_statement "*(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;" (assignment_expression "*(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1" (pointer_expression "*(uint *)(iVar4 + 0x308)" (* "*") (cast_expression "(uint *)(iVar4 + 0x308)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x308)" (( "(") (binary_expression "iVar4 + 0x308" (identifier "iVar4") (+ "+") (number_literal "0x308")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar4 + 0x308) | 1" (pointer_expression "*(uint *)(iVar4 + 0x308)" (* "*") (cast_expression "(uint *)(iVar4 + 0x308)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x308)" (( "(") (binary_expression "iVar4 + 0x308" (identifier "iVar4") (+ "+") (number_literal "0x308")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;" (assignment_expression "*(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1" (pointer_expression "*(int *)(pcVar11 + 0x118)" (* "*") (cast_expression "(int *)(pcVar11 + 0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x118)" (( "(") (binary_expression "pcVar11 + 0x118" (identifier "pcVar11") (+ "+") (number_literal "0x118")) () ")")))) (= "=") (binary_expression "*(int *)(pcVar11 + 0x118) + 1" (pointer_expression "*(int *)(pcVar11 + 0x118)" (* "*") (cast_expression "(int *)(pcVar11 + 0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x118)" (( "(") (binary_expression "pcVar11 + 0x118" (identifier "pcVar11") (+ "+") (number_literal "0x118")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 png_ptr,type_2 info_ptr,type_3 var_10)

{
  type_4 var_23;
  int var_18;
  type_3 var_1;
  type_5 var_2;
  int var_9;
  type_6 *var_12;
  type_7 var_22;
  type_8 uVar8;
  type_8 uVar9;
  type_9 var_14;
  type_1 ppVar11;
  type_1 png_ptr_00;
  type_2 var_17;
  type_7 var_24;
  type_7 var_20;
  type_7 var_27;
  type_6 *var_11;
  type_9 var_6;
  type_8 unaff_s5;
  type_7 var_21;
  type_10 *var_19;
  type_11 *var_26;
  type_11 *pcVar18;
  type_4 apStackY_f4 [4];
  type_12 auStackY_f0 [4];
  int var_28;
  type_6 *ppcStackY_e8;
  type_7 ppStackY_e4;
  type_9 ppStackY_e0;
  type_11 *pcStackY_dc;
  type_13 pStack_b4;
  type_14 pStack_b0;
  int var_25;
  type_6 *ppcStack_8c;
  type_9 ppStack_88;
  type_3 pStack_84;
  type_1 ppStack_80;
  type_2 ppStack_7c;
  type_8 uStack_78;
  type_13 var_15;
  type_14 text;
  
  var_18 = *(int *)PTR___stack_chk_guard_000564c0;
  var_1 = png_ptr->user_chunk_cache_max;
  ppVar11 = png_ptr;
  var_20 = (type_7)var_10;
  if (var_1 == 0) {
LAB_00031414:
    var_2 = png_ptr->mode;
    if ((var_2 & 1) == 0) {
      (*(type_11 *)PTR_png_chunk_error_00056520)(png_ptr,var_3 + 0x376c);
    }
    else {
      var_20 = (type_7)&var_4;
      if ((var_2 & 4) != 0) {
        png_ptr->mode = var_2 | 8;
      }
      var_6 = var_5(png_ptr,var_10,2);
      if (var_6 != (type_9)0x0) {
        var_20 = (type_7)var_10;
        var_7(png_ptr,var_6,var_10);
        var_17 = (type_2)0x0;
        var_9 = var_8(png_ptr,0);
        if (var_9 == 0) {
          if (var_10 == 0) {
            var_17 = (type_2)(var_3 + 0x3810);
          }
          else if (*var_6 == '\0') {
            var_17 = (type_2)(var_3 + 0x3810);
          }
          else {
            var_12 = (type_6 *)0x0;
            for (var_11 = (type_6 *)0x1;
                ((type_6 *)var_10 != var_11 &&
                (*(type_9)((int)var_11 + (int)var_6) != '\0'));
                var_11 = (type_6 *)((int)var_11 + 1)) {
              var_12 = var_11;
            }
            if (var_12 < (type_6 *)0x4f) {
              if (var_10 < var_12 + 1) {
                var_17 = (type_2)(var_3 + 0x47fc);
              }
              else {
                var_6 = (type_9)((int)var_12 + (int)var_6);
                if (var_6[2] == '\0') {
                  var_15 = 0xffffffff;
                  var_6 = (type_9)((int)var_12 + 3);
                  unaff_s5 = 1;
                  var_20 = (type_7)var_6;
                  var_9 = var_13
                                    (png_ptr,var_10,(type_3)var_6,&var_15,1);
                  if (var_9 == 1) {
                    var_14 = png_ptr->read_buffer;
                    if (var_14 == (type_9)0x0) {
                      var_17 = (type_2)(var_3 + 0x3a04);
                    }
                    else {
                      (var_14 + (int)var_11)[var_15 + 2] = '\0';
                      text.compression = 0;
                      text.text = (type_6)(var_14 + (int)var_6);
                      text.text_length = var_15;
                      text.itxt_length = 0;
                      text.lang = (type_6)0x0;
                      text.lang_key = (type_6)0x0;
                      var_20 = &text;
                      ppVar11 = png_ptr;
                      text.key = (type_6)var_14;
                      var_9 = var_16(png_ptr,info_ptr,var_20,1);
                      var_17 = (type_2)var_3;
                      if (var_9 == 0) goto LAB_0003169c;
                      var_17 = (type_2)(var_3 + 0x1084);
                    }
                  }
                  else {
                    var_17 = (type_2)(png_ptr->zstream).msg;
                    ppVar11 = png_ptr;
                    if (var_17 == (type_2)0x0) goto LAB_0003169c;
                  }
                }
                else {
                  var_17 = (type_2)(var_3 + 0x3a24);
                }
              }
            }
            else {
              var_17 = (type_2)(var_3 + 0x3810);
            }
          }
          ppVar11 = png_ptr;
          (*(type_11 *)PTR_png_chunk_benign_error_000564a0)();
        }
        goto LAB_0003169c;
      }
    }
    var_8(png_ptr,var_10);
    var_17 = (type_2)(var_3 + 0x2f14);
    (*(type_11 *)PTR_png_chunk_benign_error_000564a0)();
  }
  else if (var_1 == 1) {
    var_17 = (type_2)var_10;
    var_8(png_ptr,var_10);
  }
  else {
    png_ptr->user_chunk_cache_max = var_1 - 1;
    if (var_1 - 1 != 1) goto LAB_00031414;
    var_8(png_ptr,var_10);
    var_17 = (type_2)(var_3 + 0x39c0);
    (*(type_11 *)PTR_png_chunk_benign_error_000564a0)();
  }
LAB_0003169c:
  if (var_18 == *(int *)PTR___stack_chk_guard_000564c0) {
    return;
  }
  var_19 = PTR___stack_chk_fail_00056488;
  (*(type_11 *)PTR___stack_chk_fail_00056488)();
  var_25 = **(int **)(var_19 + 0x24ddc);
  var_1 = ppVar11->user_chunk_cache_max;
  var_27 = var_20;
  ppcStack_8c = var_11;
  ppStack_88 = var_6;
  pStack_84 = var_10;
  ppStack_80 = png_ptr;
  ppStack_7c = info_ptr;
  uStack_78 = unaff_s5;
  if (var_1 == 0) {
LAB_00031754:
    var_2 = ppVar11->mode;
    if ((var_2 & 1) == 0) {
      (**(type_11 **)(var_19 + 0x24e3c))(ppVar11,*(int *)(var_19 + 0x24938) + 0x376c);
    }
    else {
      var_27 = (type_7)0x1;
      if ((var_2 & 4) != 0) {
        ppVar11->mode = var_2 | 8;
      }
      var_10 = (type_3)
               var_5(ppVar11,(type_13)((int)&var_20->compression + 1),1);
      if ((type_9)var_10 != (type_9)0x0) {
        var_27 = var_20;
        var_7(ppVar11,(type_9)var_10,(type_3)var_20);
        var_24 = (type_7)0x0;
        png_ptr_00 = ppVar11;
        var_18 = var_8(ppVar11,0);
        if (var_18 != 0) goto LAB_00031ad0;
        if (var_20 == (type_7)0x0) {
          var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x3810);
LAB_00031abc:
          var_26 = *(type_11 **)(var_19 + 0x24dbc);
        }
        else {
          if (*(type_4 *)var_10 == '\0') {
            var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x3810);
            goto LAB_00031abc;
          }
          var_24 = (type_7)0x1;
          var_22 = (type_7)0x0;
          while ((var_21 = var_24, var_20 != var_21 &&
                 (*(type_9)(var_10 + (int)var_21) != '\0'))) {
            var_22 = var_21;
            var_24 = (type_7)((int)&var_21->compression + 1);
          }
          if ((type_7)0x4e < var_22) {
            var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x3810);
            goto LAB_00031abc;
          }
          if (var_20 < (type_7)((int)&var_22->key + 2)) {
            var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x47fc);
            goto LAB_00031abc;
          }
          var_23 = ((type_9)(var_10 + (int)var_22))[2];
          var_11 = &var_22->key;
          if (var_23 != '\0') {
            if (var_23 == '\x01') {
              var_11 = &var_22->key;
              if (((type_9)(var_10 + (int)var_22))[3] == '\0') goto LAB_00031900;
              var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x3a40);
            }
            else {
              var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x3a40);
            }
            goto LAB_00031abc;
          }
LAB_00031900:
          var_11 = &var_22->key;
          pStack_b4 = 0;
          var_24 = (type_7)var_11;
          if ((var_11 < var_20) && (*(type_9)(var_10 + (int)var_11) != '\0')) {
            var_12 = &var_22->key;
            do {
              var_24 = (type_7)((int)var_12 + 1);
              if (var_20 == var_24) break;
              var_12 = (type_6 *)&var_24->compression;
            } while (*(type_9)(var_10 + (int)var_24) != '\0');
          }
          var_21 = (type_7)((int)&var_24->compression + 1);
          var_22 = var_21;
          if ((var_21 < var_20) && (*(type_9)(var_10 + (int)var_21) != '\0')) {
            var_24 = (type_7)((int)&var_24->compression + 2);
            do {
              var_22 = var_24;
              if (var_20 <= var_22) break;
              var_24 = (type_7)((int)&var_22->compression + 1);
            } while (*(type_9)(var_10 + (int)var_22) != '\0');
          }
          var_22 = (type_7)((int)&var_22->compression + 1);
          if (var_23 == '\0') {
            if (var_22 <= var_20) {
              pStack_b4 = (int)var_20 - (int)var_22;
              var_20 = (type_7)(var_10 + (int)var_20);
              *(type_4 *)&var_20->compression = '\0';
              pStack_b0.compression = 1;
              goto LAB_000319a0;
            }
            var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x47fc);
            goto LAB_00031abc;
          }
          if (var_20 <= var_22) {
            var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x47fc);
            goto LAB_00031abc;
          }
          pStack_b4 = 0xffffffff;
          var_27 = var_22;
          var_18 = var_13
                            (ppVar11,(type_3)var_20,(type_3)var_22,&pStack_b4,1);
          if (var_18 == 1) {
            var_10 = (type_3)ppVar11->read_buffer;
            ((type_9)(var_10 + (int)var_22))[pStack_b4] = '\0';
            pStack_b0.compression = 2;
          }
          else {
            var_24 = (type_7)(ppVar11->zstream).msg;
            if (var_24 != (type_7)0x0) goto LAB_00031abc;
            ((type_9)(var_10 + (int)var_22))[pStack_b4] = '\0';
            pStack_b0.compression = 2;
          }
LAB_000319a0:
          pStack_b0.lang = (type_6)(var_10 + (int)var_11);
          pStack_b0.lang_key = (type_6)(var_10 + (int)var_21);
          pStack_b0.text = (type_6)(var_10 + (int)var_22);
          pStack_b0.text_length = 0;
          pStack_b0.itxt_length = pStack_b4;
          var_27 = &pStack_b0;
          pStack_b0.key = (type_6)var_10;
          var_18 = var_16(ppVar11,var_17,var_27,1);
          var_24 = (type_7)0x0;
          if (var_18 != 0) {
            var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x1084);
          }
          png_ptr_00 = ppVar11;
          if (var_24 == (type_7)0x0) goto LAB_00031ad0;
          var_26 = *(type_11 **)(var_19 + 0x24dbc);
        }
        (*var_26)();
        png_ptr_00 = ppVar11;
        goto LAB_00031ad0;
      }
    }
    var_8(ppVar11,(type_3)var_20);
    var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x2f14);
    (**(type_11 **)(var_19 + 0x24dbc))();
    png_ptr_00 = ppVar11;
  }
  else if (var_1 == 1) {
    var_24 = var_20;
    var_8(ppVar11,(type_3)var_20);
    png_ptr_00 = ppVar11;
  }
  else {
    ppVar11->user_chunk_cache_max = var_1 - 1;
    if (var_1 - 1 != 1) goto LAB_00031754;
    var_8(ppVar11,(type_3)var_20);
    var_24 = (type_7)(*(int *)(var_19 + 0x24938) + 0x39c0);
    (**(type_11 **)(var_19 + 0x24dbc))();
    png_ptr_00 = ppVar11;
  }
LAB_00031ad0:
  if (var_25 == **(int **)(var_19 + 0x24ddc)) {
    return;
  }
  var_26 = *(type_11 **)(var_19 + 0x24da4);
  pcVar18 = png_handle_acTL;
  (*var_26)();
  var_28 = **(int **)(var_26 + 0x24990);
  var_2 = png_ptr_00->mode;
  ppcStackY_e8 = var_11;
  ppStackY_e4 = var_20;
  ppStackY_e0 = (type_9)var_10;
  pcStackY_dc = pcVar18;
  if ((var_2 & 1) == 0) {
    (**(type_11 **)(var_26 + 0x248e0))();
    var_27 = var_20;
  }
  else if ((var_2 & 4) == 0) {
    if ((int)(var_2 << 0xf) < 0) {
      (**(type_11 **)(var_26 + 0x24914))();
      var_8(png_ptr_00,(type_3)var_27);
      ppVar11 = png_ptr_00;
    }
    else if (var_27 == (type_7)0x8) {
      var_7(png_ptr_00,apStackY_f4,8);
      var_8(png_ptr_00,0);
      uVar8 = (**(type_11 **)(var_26 + 0x24810))(png_ptr_00,apStackY_f4);
      uVar9 = (**(type_11 **)(var_26 + 0x24810))(png_ptr_00,auStackY_f0);
      ppVar11 = png_ptr_00;
      var_18 = (**(type_11 **)(var_26 + 0x2484c))(png_ptr_00,var_24,uVar8,uVar9);
      var_27 = var_24;
      if (var_18 != 0) {
        png_ptr_00->mode = png_ptr_00->mode | 0x10000;
      }
    }
    else {
      (**(type_11 **)(var_26 + 0x24914))();
      var_8(png_ptr_00,(type_3)var_27);
      ppVar11 = png_ptr_00;
    }
    goto LAB_00031bc4;
  }
  (**(type_11 **)(var_26 + 0x24914))();
  var_8(png_ptr_00,(type_3)var_27);
  ppVar11 = png_ptr_00;
LAB_00031bc4:
  if (var_28 == **(int **)(var_26 + 0x24990)) {
    return;
  }
  (**(type_11 **)(var_26 + 0x24958))();
  if (((type_5)var_27->text & 0x60000) == 0x20000) {
    ppVar11->apng_flags = ppVar11->apng_flags | 1;
    var_27[10].compression = var_27[10].compression + 1;
    return;
  }
  return;
}


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

void MASKED(int param_1,undefined4 param_2,char *param_3)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  char *pcVar8;
  char *pcVar9;
  char *pcVar10;
  char *pcVar11;
  char *unaff_s0;
  char *unaff_s1;
  undefined4 unaff_s5;
  char *pcVar12;
  char *pcVar13;
  undefined *puVar14;
  code *pcVar15;
  code *pcVar16;
  undefined1 auStack_f4 [4];
  undefined1 auStack_f0 [4];
  int iStack_ec;
  char *pcStack_e8;
  char *pcStack_e4;
  char *pcStack_e0;
  code *pcStack_dc;
  undefined4 uStack_c8;
  undefined *puStack_c0;
  int iStack_b4;
  undefined4 uStack_b0;
  char *pcStack_ac;
  char *pcStack_a8;
  undefined4 uStack_a4;
  int iStack_a0;
  char *pcStack_9c;
  char *pcStack_98;
  int iStack_94;
  char *pcStack_8c;
  char *pcStack_88;
  char *pcStack_84;
  int iStack_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  int local_44;
  char local_40 [4];
  int local_3c;
  char *local_38;
  int local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  
  local_24 = *(int *)PTR___stack_chk_guard_000564c0;
  iVar2 = *(int *)(param_1 + 0x354);
  iVar4 = param_1;
  pcVar10 = param_3;
  if (iVar2 == 0) {
LAB_00031414:
    uVar3 = *(uint *)(param_1 + 0x124);
    if ((uVar3 & 1) == 0) {
      (*(code *)PTR_png_chunk_error_00056520)(param_1,PTR_LAB_0005601c + 0x376c);
    }
    else {
      pcVar10 = (char *)0x2;
      if ((uVar3 & 4) != 0) {
        *(uint *)(param_1 + 0x124) = uVar3 | 8;
      }
      unaff_s1 = (char *)FUN_0002ccbc(param_1,param_3);
      if (unaff_s1 != (char *)0x0) {
        pcVar10 = param_3;
        FUN_0002cfe0(param_1,unaff_s1);
        pcVar8 = (char *)0x0;
        iVar2 = FUN_0002d154(param_1,0);
        if (iVar2 == 0) {
          if (param_3 == (char *)0x0) {
            pcVar8 = PTR_LAB_0005601c + 0x3810;
          }
          else if (*unaff_s1 == '\0') {
            pcVar8 = PTR_LAB_0005601c + 0x3810;
          }
          else {
            pcVar8 = (char *)0x0;
            for (unaff_s0 = (char *)0x1; (param_3 != unaff_s0 && (unaff_s1[(int)unaff_s0] != '\0'));
                unaff_s0 = unaff_s0 + 1) {
              pcVar8 = unaff_s0;
            }
            if (pcVar8 < (char *)0x4f) {
              if (param_3 < pcVar8 + 4) {
                pcVar8 = PTR_LAB_0005601c + 0x47fc;
              }
              else {
                unaff_s1 = unaff_s1 + (int)pcVar8;
                if (unaff_s1[2] == '\0') {
                  local_44 = -1;
                  unaff_s1 = pcVar8 + 3;
                  unaff_s5 = 1;
                  pcVar10 = unaff_s1;
                  iVar4 = FUN_0002d7c4(param_1,param_3,unaff_s1,&local_44);
                  if (iVar4 == 1) {
                    iVar2 = *(int *)(param_1 + 0x374);
                    if (iVar2 == 0) {
                      pcVar8 = PTR_LAB_0005601c + 0x3a04;
                    }
                    else {
                      unaff_s0[local_44 + iVar2 + 2] = '\0';
                      local_40[0] = '\0';
                      local_40[1] = '\0';
                      local_40[2] = '\0';
                      local_40[3] = '\0';
                      local_38 = unaff_s1 + iVar2;
                      local_34 = local_44;
                      local_30 = 0;
                      local_2c = 0;
                      local_28 = 0;
                      pcVar10 = local_40;
                      iVar4 = param_1;
                      local_3c = iVar2;
                      iVar2 = FUN_00035a1c(param_1,param_2,pcVar10,1);
                      pcVar8 = PTR_LAB_0005601c;
                      if (iVar2 == 0) goto LAB_0003169c;
                      pcVar8 = PTR_LAB_0005601c + 0x1084;
                    }
                  }
                  else {
                    pcVar8 = *(char **)(param_1 + 0x14c);
                    iVar4 = param_1;
                    if (pcVar8 == (char *)0x0) goto LAB_0003169c;
                  }
                }
                else {
                  pcVar8 = PTR_LAB_0005601c + 0x3a24;
                }
              }
            }
            else {
              pcVar8 = PTR_LAB_0005601c + 0x3810;
            }
          }
          iVar4 = param_1;
          (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);
        }
        goto LAB_0003169c;
      }
    }
    FUN_0002d154(param_1,param_3);
    pcVar8 = PTR_LAB_0005601c + 0x2f14;
    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);
  }
  else if (iVar2 == 1) {
    pcVar8 = param_3;
    FUN_0002d154(param_1,param_3);
  }
  else {
    *(int *)(param_1 + 0x354) = iVar2 + -1;
    if (iVar2 + -1 != 1) goto LAB_00031414;
    FUN_0002d154(param_1,param_3);
    pcVar8 = PTR_LAB_0005601c + 0x39c0;
    (*(code *)PTR_png_chunk_benign_error_000564a0)(param_1,pcVar8);
  }
LAB_0003169c:
  if (local_24 == *(int *)PTR___stack_chk_guard_000564c0) {
    return;
  }
  puVar14 = PTR___stack_chk_fail_00056488;
  (*(code *)PTR___stack_chk_fail_00056488)();
  puStack_c0 = puVar14 + 0x2c90c;
  iStack_94 = **(int **)(puVar14 + 0x24ddc);
  iVar2 = *(int *)(iVar4 + 0x354);
  pcVar11 = pcVar10;
  pcStack_8c = unaff_s0;
  pcStack_88 = unaff_s1;
  pcStack_84 = param_3;
  iStack_80 = param_1;
  uStack_7c = param_2;
  uStack_78 = unaff_s5;
  if (iVar2 == 0) {
LAB_00031754:
    uVar3 = *(uint *)(iVar4 + 0x124);
    if ((uVar3 & 1) == 0) {
      (**(code **)(puVar14 + 0x24e3c))(iVar4,*(int *)(puVar14 + 0x24938) + 0x376c);
    }
    else {
      pcVar11 = (char *)0x1;
      if ((uVar3 & 4) != 0) {
        *(uint *)(iVar4 + 0x124) = uVar3 | 8;
      }
      param_3 = (char *)FUN_0002ccbc(iVar4,pcVar10 + 1);
      if (param_3 != (char *)0x0) {
        pcVar11 = pcVar10;
        FUN_0002cfe0(iVar4,param_3);
        pcVar9 = (char *)0x0;
        iVar2 = iVar4;
        iVar5 = FUN_0002d154();
        if (iVar5 != 0) goto LAB_00031ad0;
        if (pcVar10 == (char *)0x0) {
          pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);
LAB_00031abc:
          pcVar15 = *(code **)(puStack_c0 + -0x7b50);
        }
        else {
          if (*param_3 == '\0') {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);
            goto LAB_00031abc;
          }
          pcVar9 = (char *)0x1;
          pcVar12 = (char *)0x0;
          while ((pcVar13 = pcVar9, pcVar10 != pcVar13 && (param_3[(int)pcVar13] != '\0'))) {
            pcVar12 = pcVar13;
            pcVar9 = pcVar13 + 1;
          }
          if ((char *)0x4e < pcVar12) {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3810);
            goto LAB_00031abc;
          }
          if (pcVar10 < pcVar12 + 6) {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);
            goto LAB_00031abc;
          }
          cVar1 = (param_3 + (int)pcVar12)[2];
          unaff_s0 = pcVar12 + 4;
          if (cVar1 != '\0') {
            if (cVar1 == '\x01') {
              unaff_s0 = pcVar12 + 4;
              if ((param_3 + (int)pcVar12)[3] == '\0') goto LAB_00031900;
              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);
            }
            else {
              pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x3a40);
            }
            goto LAB_00031abc;
          }
LAB_00031900:
          unaff_s0 = pcVar12 + 4;
          iStack_b4 = 0;
          pcVar9 = unaff_s0;
          if ((unaff_s0 < pcVar10) && (param_3[(int)unaff_s0] != '\0')) {
            pcVar12 = pcVar12 + 5;
            do {
              pcVar9 = pcVar12;
              if (pcVar10 == pcVar9) break;
              pcVar12 = pcVar9 + 1;
            } while (param_3[(int)pcVar9] != '\0');
          }
          pcVar13 = pcVar9 + 1;
          pcVar12 = pcVar13;
          if ((pcVar13 < pcVar10) && (param_3[(int)pcVar13] != '\0')) {
            pcVar9 = pcVar9 + 2;
            do {
              pcVar12 = pcVar9;
              if (pcVar10 <= pcVar12) break;
              pcVar9 = pcVar12 + 1;
            } while (param_3[(int)pcVar12] != '\0');
          }
          pcVar12 = pcVar12 + 1;
          if (cVar1 == '\0') {
            if (pcVar12 <= pcVar10) {
              iStack_b4 = (int)pcVar10 - (int)pcVar12;
              pcVar10 = param_3 + (int)pcVar10;
              *pcVar10 = '\0';
              uStack_b0 = 1;
              goto LAB_000319a0;
            }
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);
            goto LAB_00031abc;
          }
          if (pcVar10 <= pcVar12) {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x47fc);
            goto LAB_00031abc;
          }
          iStack_b4 = -1;
          uStack_c8 = 1;
          pcVar11 = pcVar12;
          iVar2 = FUN_0002d7c4(iVar4,pcVar10,pcVar12,&iStack_b4);
          if (iVar2 == 1) {
            param_3 = *(char **)(iVar4 + 0x374);
            (param_3 + (int)pcVar12)[iStack_b4] = '\0';
            uStack_b0 = 2;
          }
          else {
            pcVar9 = *(char **)(iVar4 + 0x14c);
            if (pcVar9 != (char *)0x0) goto LAB_00031abc;
            (param_3 + (int)pcVar12)[iStack_b4] = '\0';
            uStack_b0 = 2;
          }
LAB_000319a0:
          pcStack_9c = param_3 + (int)unaff_s0;
          pcStack_98 = param_3 + (int)pcVar13;
          pcStack_a8 = param_3 + (int)pcVar12;
          uStack_a4 = 0;
          iStack_a0 = iStack_b4;
          pcVar11 = (char *)&uStack_b0;
          pcStack_ac = param_3;
          iVar2 = FUN_00035a1c(iVar4,pcVar8,pcVar11,1);
          pcVar9 = (char *)0x0;
          if (iVar2 != 0) {
            pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x1084);
          }
          iVar2 = iVar4;
          if (pcVar9 == (char *)0x0) goto LAB_00031ad0;
          pcVar15 = *(code **)(puStack_c0 + -0x7b50);
        }
        (*pcVar15)();
        iVar2 = iVar4;
        goto LAB_00031ad0;
      }
    }
    FUN_0002d154(iVar4,pcVar10);
    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x2f14);
    (**(code **)(puStack_c0 + -0x7b50))();
    iVar2 = iVar4;
  }
  else if (iVar2 == 1) {
    pcVar9 = pcVar10;
    FUN_0002d154();
    iVar2 = iVar4;
  }
  else {
    *(int *)(iVar4 + 0x354) = iVar2 + -1;
    if (iVar2 + -1 != 1) goto LAB_00031754;
    FUN_0002d154();
    pcVar9 = (char *)(*(int *)(puStack_c0 + -0x7fd4) + 0x39c0);
    (**(code **)(puStack_c0 + -0x7b50))();
    iVar2 = iVar4;
  }
LAB_00031ad0:
  if (iStack_94 == **(int **)(puStack_c0 + -0x7b30)) {
    return;
  }
  pcVar15 = *(code **)(puStack_c0 + -0x7b68);
  pcVar16 = FUN_00031b30;
  (*pcVar15)();
  iStack_ec = **(int **)(pcVar15 + 0x24990);
  uVar3 = *(uint *)(iVar2 + 0x124);
  pcStack_e8 = unaff_s0;
  pcStack_e4 = pcVar10;
  pcStack_e0 = param_3;
  pcStack_dc = pcVar16;
  if ((uVar3 & 1) == 0) {
    (**(code **)(pcVar15 + 0x248e0))();
    pcVar11 = pcVar10;
  }
  else if ((uVar3 & 4) == 0) {
    if ((int)(uVar3 << 0xf) < 0) {
      (**(code **)(pcVar15 + 0x24914))();
      FUN_0002d154();
      iVar4 = iVar2;
    }
    else if (pcVar11 == (char *)0x8) {
      FUN_0002cfe0();
      FUN_0002d154(iVar2,0);
      uVar6 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f4);
      uVar7 = (**(code **)(pcVar15 + 0x24810))(iVar2,auStack_f0);
      iVar4 = iVar2;
      iVar5 = (**(code **)(pcVar15 + 0x2484c))(iVar2,pcVar9,uVar6,uVar7);
      pcVar11 = pcVar9;
      if (iVar5 != 0) {
        *(uint *)(iVar2 + 0x124) = *(uint *)(iVar2 + 0x124) | 0x10000;
      }
    }
    else {
      (**(code **)(pcVar15 + 0x24914))();
      FUN_0002d154();
      iVar4 = iVar2;
    }
    goto LAB_00031bc4;
  }
  (**(code **)(pcVar15 + 0x24914))();
  FUN_0002d154();
  iVar4 = iVar2;
LAB_00031bc4:
  if (iStack_ec == **(int **)(pcVar15 + 0x24990)) {
    return;
  }
  (**(code **)(pcVar15 + 0x24958))();
  if ((*(uint *)(pcVar11 + 8) & 0x60000) == 0x20000) {
    *(uint *)(iVar4 + 0x308) = *(uint *)(iVar4 + 0x308) | 1;
    *(int *)(pcVar11 + 0x118) = *(int *)(pcVar11 + 0x118) + 1;
    return;
  }
  return;
}

